我正在尝试在Mac上安装Crypto ++ 5.6.2。 我跑的时候
make -j4 libcryptopp.a"
我收到以下错误:
libtool: unrecognized option `-static'
libtool: Try `libtool --help' for more information.
make: *** [libcryptopp.a] Error 1
有人可以帮帮我吗?
答案 0 :(得分:2)
有人可以帮帮我吗?
您可以采取一些措施来简化这一过程。
首先,打开GNUmake
并在第1行添加fPIC
:
CXXFLAGS = -DNDEBUG -g -O2 -fPIC
其次,打开GNUmake
并从第18行的Clang检测逻辑中删除" version" :
CLANG_COMPILER = $(shell $(CXX) --version 2>&1 | $(EGREP) -i -c "clang")
第三,打开GNUmake
并从第38行周围的达尔文旗帜周围放下 GAS检查。您希望Darwin检查独立,不进行ifeq ($(GAS219_OR_LATER),0)
检查。
ifeq ($(UNAME),Darwin)
CXXFLAGS += -arch x86_64 -arch i386
else
CXXFLAGS += -march=native
endif
第四,打开GNUmake
并在第45行的Darwin标志后添加以下内容:
ifneq ($(CLANG_COMPILER),0)
CXXFLAGS += -Wno-tautological-compare -Wno-unused-value
endif
调整makefile:
# Make the static lib, shared object, and test program
cd cryptopp
make static dynamic cryptest.exe
完成后:
# 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)
man pages);它默默地放下-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
。存档只是目标文件的集合,您可以在命令行上指定要链接的目标文件。
这是我使用的GNUmakefile的Pastebin:Crypto++ modified makefile for OS X and mobile。
编辑(2015年6月):Crypto ++正在从Sourceforge迁移到GitHub。上面讨论的大多数更改都已合并到makefile中。