确定在运行时使用CRYPTOPP_BOOL_AESNI_INTRINSICS_AVAILABLE

时间:2016-04-29 13:56:16

标签: linux crypto++

我们正在使用Crypto ++ 5.6.3并在CentOS 6上使用g ++进行编译。是否可以在运行时确定我们的应用程序是否与使用CRYPTOPP_BOOL_AESNI_INTRINSICS_AVAILABLE 1构建的libcryptopp链接为0或{ {1}}?

谢谢

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