我们正在使用Crypto ++ 5.6.3并在CentOS 6上使用g ++进行编译。是否可以在运行时确定我们的应用程序是否与使用CRYPTOPP_BOOL_AESNI_INTRINSICS_AVAILABLE
1
构建的libcryptopp链接为0
或{ {1}}?
谢谢
答案 0 :(得分:0)
是否可以在运行时确定我们的应用程序是否已将使用CRYPTOPP_BOOL_AESNI_INTRINSICS_AVAILABLE构建的libcryptopp链接为1或0?
不,不是。事实上,您甚至无法判断您使用的是AES-NI还是软件实现。
有人谈到将CXXFLAGS
藏起来以备将来使用(并从cryptest.exe
程序中打印出来),但其优先级非常低。如此低,没有关于它的错误报告来进行工作。
编辑 :现在在Crypto ++邮件列表中打开:GNUmakefile and 'make flag' recipe。
Crypto ++测试套件为宏打印一个值。它来自validat1.cpp,在第310行附近:
cout << "AESNI_INTRINSICS == " << CRYPTOPP_BOOL_AESNI_INTRINSICS_AVAILABLE << endl;
但是我认为您知道,库构建设置和构建设置可能不同。
值得注意的是,Crypto ++使用makefile,而发行版通常使用Autotools构建。发行版选择自己的标志,它们可能与Crypto ++ makefile不同。使用发行版时,您可以检查*.pc
文件或类似文件。
相关,我们通过CentOS 7在CentOS 5上进行测试.CentOS 5是一台不错的机器,因为它有GCC 4.1,而那个版本的GCC特别关于某些东西。例如,它不能消耗-march=native
。