【问题标题】:Installing Crypto++ 5.6.2 on Mac OS X在 Mac OS X 上安装 Crypto++ 5.6.2
【发布时间】:2014-11-01 22:22:49
【问题描述】:

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

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

【问题讨论】:

  • "libtool: unrecognized option..." - 为什么 libtool 会抬起丑陋的脑袋? Crypto++ 不是一个自动工具项目。你cd 进入项目目录,然后你输入make static dynamic cryptest.exe。完成后,您运行cryptest.exe v 来运行测试套件。如果没有错误,则使用sudo make install PREFIX=/usr/local/cryptopp/darwin(或您喜欢的任何位置)安装它。
  • 请参阅下面提供的 2015 年 6 月更新。

标签: crypto++ failed-installation


【解决方案1】:

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

您可以做一些事情来让这更容易。

首先打开GNUmake并在第一行添加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 flags之后添加以下内容:

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。也就是说,使用以下内容(这是我在 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 中。

【讨论】:

  • 修改 GNUmake 后,我仍然遇到同样的错误。请帮忙。
  • 重新下载库。如果手动解压,则使用unzip -a
  • make参数的详细解释很有帮助。
猜你喜欢
  • 2011-07-28
  • 2017-01-16
  • 2013-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-17
相关资源
最近更新 更多