在 Mac OS X 上安装 Crypto++ 5.6.2

2024-04-28

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

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


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

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

首先,打开GNUmake http://sourceforge.net/p/cryptopp/code/HEAD/tree/trunk/c5/GNUmakefile并添加fPIC第 1 行:

CXXFLAGS = -DNDEBUG -g -O2 -fPIC

二、开放GNUmake http://sourceforge.net/p/cryptopp/code/HEAD/tree/trunk/c5/GNUmakefile并掉落“版本”来自第 18 行的 Clang 检测逻辑:

CLANG_COMPILER = $(shell $(CXX) --version 2>&1 | $(EGREP) -i -c "clang")

三、开放GNUmake http://sourceforge.net/p/cryptopp/code/HEAD/tree/trunk/c5/GNUmakefile并掉落气体检查从第 38 行附近的达尔文标志周围开始。您希望达尔文检查单独存在,而不需要ifeq ($(GAS219_OR_LATER),0) check.

ifeq ($(UNAME),Darwin)
  CXXFLAGS += -arch x86_64 -arch i386
else
  CXXFLAGS += -march=native
endif

四、开放GNUmake http://sourceforge.net/p/cryptopp/code/HEAD/tree/trunk/c5/GNUmakefile并在第 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)手册页 http://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/dyld.1.html);它默默地掉落-Wl,rpath;它默默地掉落-Bstatic;并且它总是链接到共享对象(如果可用)。即使在 iOS 上,它也会链接到动态库,这是禁止的!

在 OS X 上,您应该完全指定静态存档,而不是使用-l and -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++ 修改了适用于 OS X 和移动设备的 makefile http://pastebin.com/d7G6PcEX.


EDIT(2015 年 6 月):Crypto++ 正在从来源锻造 https://sourceforge.net/projects/cryptopp/ to GitHub https://github.com/weidai11/cryptopp。上面讨论的大部分更改已合并到 makefile 中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Mac OS X 上安装 Crypto++ 5.6.2 的相关文章

随机推荐

  • 部署应用程序时无需取消部署前一个应用程序并且无需停机?

    我在 Web 应用程序中使用 Glassfish Java 和 JSP over MySQL 许多在线用户使用此网络应用程序 该网站不应关闭 当我想要部署一个新的 war 文件时 我应该在服务器上为我的应用程序取消部署并部署新的战争文件 我
  • 参数化测试也取决于 pytest 中的参数化值

    我有一个测试 我有一个设置方法 应该收到一个dataset和一个测试函数 应该为每个运行data in dataset 基本上我需要类似的东西 datasetA data1 a data2 a data3 a datasetB data1
  • 如何向 ionic 2 警报添加禁用按钮

    我创建了一个 ionic2 警报 我必须根据条件禁用按钮 这是我的代码的简单结构 import AlertController from ionic angular export class MyPage constructor publi
  • 将子域重定向到新域

    大家好 尝试让 301 重定向正常工作但遇到了麻烦 我需要将 sub domain1 com 重定向到 www domain2 com 并确保所有文件名或参数都随之发送 这就是我正在尝试的 RewriteCond HTTP HOST dom
  • Maven + Surefire/Failsafe - forkMode="perthread" 不起作用...解决方法?

    我们正在开发一个基于嵌入式 Infinispan 数据网格集群的应用程序 在我们应用程序的目标环境中 数据网格的每个成员将在独立的 JVM 中运行并使用jgroup集群将会形成 这实际上是由 Infinispan 完成的 为了对我们正在使用
  • 代理模式和装饰者模式的区别

    你能给出任何好的解释吗 Proxy and 装饰者 我看到的主要区别是 当我们假设Proxy uses 作品 and 装饰者 uses 聚合那么似乎很清楚 通过使用多个 一个或多个 装饰器您可以修改 添加功能到预先存在的实例 装饰 而Pro
  • JDK 8 中的默认值是 Java 中多重继承的一种形式吗?

    JDK 8 中的一项新功能允许您添加到现有接口 同时保留二进制兼容性 语法就像 public interface SomeInterface void existingInterface void newInterface default
  • 在 xhtml 页面中显示版本和构建日期

    我想在 JSF 应用程序的页脚上显示构建版本和构建日期 这些页面是 XHTML 我正在寻找从 pom xml 或其他工件获取信息的方法 我发现以下使用 maven replace 插件 http www vineetmanohar com
  • 颜色“透明”不起作用

    我的 IE 有问题 还有什么问题 我使用 CSS 生成内容 其中也有一个背景图像 我看起来是这样的 nav ul li after content position relative z index 99 background transp
  • 对 Azure Functions 和 .csx 文件进行单元测试

    Azure Functions 抽象了大量依赖项 例如队列库和 Azure 表 因此 从单元测试依赖项模拟的角度来看 编码工作量较少 因此维护也较少 假设我们使用 Visual Studio 2015 进行本地开发 如何对单个 Azure
  • 什么插件/工作台框架是 Eclipse RCP 的最佳 .NET 替代品?

    我正在寻找一个与 Eclipse 插件框架相当的基于插件的应用程序框架 在我看来 它包括 a core 插件管理框架 Equinox OSGI 它提供了声明扩展端点 然后发现并加载为这些端点提供服务的插件的能力 这与依赖注入不同 但不可否认
  • 在 jQuery 中将一列的内容复制到另一列

    下面的 jQuery 非常慢 约 7 秒 我显然做错了 我正在尝试复制列的内容col到专栏0在 HTML 表格中 所以如果 col 是 2 那么我需要将第 2 列复制到第 0 列 for var i 0 i lt 31 i grid tr
  • 在 div 内为

    添加下划线

    我正在尝试下划线h1 title 但由于某种原因它总是占用父 div 的整个长度 我能够做到这一点的唯一方法是添加position absolute CSS 中的属性 This is the design And this is what

  • 将我的数据库类与项目中的其他类一起使用

    我有一个自己编写的自定义数据库类 还有一个用户类和一个站点类 MySQL 类有这样的方法 connect query clean fetch 用户等级 register login logout resetPass 站点类别 updateT
  • Python 滚动文本模块

    我想使用scrolledtext模块创建一个ScrolledText小部件 以便在python中创建GUI 我已经成功创建了 ScrolledText 小部件 但是我无法向其添加水平滚动条 e3 ScrolledText window3 w
  • 如何在 laravel 中插入多类别和多列不同类别的帖子?

    大家好 我是一个新的 Laravel 我的项目有问题 我有2张桌子 posts id title category id category id name PHP Laravel Ruby 例如 我想要的结果是 如果我将帖子插入帖子数据库
  • 我无法在 Unity Hub 中激活许可证

    我重新安装了视窗 10 我从官方网站下载了 Unity Hub 运行 unity hub 我看到错误 您没有有效的许可证 错误上有 2 个按钮 管理许可证 和 关闭 我单击 管理许可证 进入 Unity 中心设置中的 许可证管理 页面 单击
  • Java 泛型和数组初始化

    下面这句话的解释是什么 public class GenericsTest statement 1 public ArrayList
  • 如何对 Spring Boot MongoRepository 进行单元测试?

    在我的 Spring Boot Web 应用程序中 我使用 MongoDB 来存储数据 在应用程序中 我使用扩展的接口访问数据库MongoRepository 如何为这样的存储库类设置单元测试 我想要的是 启动 MongoDB 的嵌入式 内
  • 在 Mac OS X 上安装 Crypto++ 5.6.2

    我正在尝试在我的 Mac 上安装 Crypto 5 6 2 当我跑步时 make j4 libcryptopp a 我收到以下错误 libtool unrecognized option static libtool Try libtool