Может кто-нибудь, пожалуйста, помогите мне с этим?
Есть несколько вещей, которые вы можете сделать, чтобы сделать это проще.
Сначала откройте GNUmake
и добавьте fPIC
в строку 1:
CXXFLAGS = -DNDEBUG -g -O2 -fPIC
Во-вторых, откройте GNUmake
и перетащите "версию " из логики обнаружения Clang в строке 18:
CLANG_COMPILER = $(shell $(CXX) --version 2>&1 | $(EGREP) -i -c "clang")
В-третьих, откройте GNUmake
и удалите проверку GAS. вокруг флагов Дарвина вокруг строки 38. Вы хотите, чтобы проверка Дарвина стояла отдельно, без проверки ifeq ($(GAS219_OR_LATER),0)
.
ifeq ($(UNAME),Darwin)
CXXFLAGS += -arch x86_64 -arch i386
else
CXXFLAGS += -march=native
endif
В-четвертых, откройте GNUmake
и добавьте следующее после Darwin флаги вокруг строки 45:
ifneq ($(CLANG_COMPILER),0)
CXXFLAGS += -Wno-tautological-compare -Wno-unused-value
endif
С измененным make-файлом:
# Make the static lib, shared object, and test program
cd cryptopp
make static dynamic cryptest.exe
После завершения make:
# Run the test program
cd cryptopp
./cryptest.exe v
После успешного завершения проверки:
# Install into /usr/local
cd cryptopp
sudo make install PREFIX=/usr/local
OS X может быть настоящим медведем. Это может быть медведь, потому что он молча игнорирует LD_PRELOAD
(вместо него используется DYLD_LIBRARY_PATH
, см. dyld(3)
справочных страниц); он молча роняет -Wl,rpath
; он молча роняет -Bstatic
; и он всегда ссылается на общий объект, если он доступен. Он будет ссылаться на динамическую библиотеку даже на iOS, где это запрещено!
В OS X вам следует полностью указать статический архив, а не использовать -l
и -L
. То есть используйте следующее (это из одной из моих тестовых программ, которые я использую в OS X):
g++ -DDEBUG=1 -g3 -O0 -Wall -Wextra -Wno-unused-parameter \
-I/usr/local/include/cryptopp \
cryptopp-test.cpp -o cryptopp-test.exe \
/usr/local/lib/libcryptopp.a
Можно полностью указать libcryptopp.a
. Архив — это просто набор объектных файлов, и вы можете указать объектные файлы для компоновки в командной строке.
Вот Pastebin файла GNUmakefile, который я использую: измененный с помощью Crypto++ make-файл для OS X и мобильных устройств.
EDIT (июнь 2015 г.): Crypto++ переходит с Sourceforge на GitHub. Большинство изменений, описанных выше, были включены в make-файл.
person
jww
schedule
08.09.2014
cd
входите в каталог проекта, а затем вводитеmake static dynamic cryptest.exe
. После его завершения вы запускаетеcryptest.exe v
для запуска набора тестов. Если ошибок нет, то вы устанавливаете его с помощьюsudo make install PREFIX=/usr/local/cryptopp/darwin
(или любого другого места, которое вы предпочитаете). - person jww   schedule 16.09.2014