在Mac OS X上安装Crypto ++ 5.6.2

时间:2014-09-08 16:18:00

标签: crypto++ failed-installation

我正在尝试在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

有人可以帮帮我吗?

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中。