crypto++ - 在 Mac OS X 上安装 Crypto++ 5.6.2

标签 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

有人可以帮我解决这个问题吗?

最佳答案

Can someone please help me with this?

您可以采取一些措施来简化此操作。

首先,打开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 行的 Darwin 标志周围删除 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

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) man pages );它默默地删除 -Wl,rpath;它默默地丢弃-Bstatic;并且它总是链接到共享对象(如果可用)。即使在 iOS 上,它也会链接到动态库,这是禁止的!

在 OS X 上,您应该完全指定静态存档,而不是使用 -l-L。也就是说,使用以下命令(这是来 self 在 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 中。

关于crypto++ - 在 Mac OS X 上安装 Crypto++ 5.6.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25728659/

相关文章:

visual-studio-2008 - 错误 1330。Visual Studio 2008,cab11.cab 的数字签名无效

linux - 密码安装失败 : usermod www-data is currently used by process 875

c++ - 在 crypto++ 中将字符串转换为字节

c++ - 'mutex' 不是 MinGW 5.3.0 中 'std' 的成员

c++ - 将十六进制字符串转换为 Crypto++ 中的字节

c++ - 在 Clion IDE 中使用 Crypto++

perl - 使用 cpan 安装 Params::Validate - 无法启动 'Build'

python - 安装后仍出现 "ImportError: No module named BeautifulSoup"错误

c++ - 使用 Crypto++ 库的 CBC 模式实现中的 AES128

安卓导出应用失败