でCRYPTOPP_BOOL_AESNI_INTRINSICS_AVAILABLEの使用を決定我々は暗号++ 5.6.3を使用してCentOSの6上++グラムでコンパイルされ、それが私たちのアプリケーションが1
または0
などCRYPTOPP_BOOL_AESNI_INTRINSICS_AVAILABLE
で構築されたlibcryptoppとリンクしている場合は、実行時に決定することは可能ですか? ランタイム
ランタイム
答えて
それが私たちのアプリケーションが1または0としてCRYPTOPP_BOOL_AESNI_INTRINSICS_AVAILABLEで構築されたlibcryptoppとリンクしている場合は、実行時に決定することが可能ですありがとうございますか!
いいえ、そうではありません。実際には、AES-NIやソフトウェア実装を使用しているかどうかを知ることさえできません。
CXXFLAGS
をこのように将来使用するために(そして、cryptest.exe
プログラムから印刷して)、その非常に低い優先順位を隠すことに関するいくつかの話があります。それほど低いので、作業を進めるためのバグ報告はありませんでした。
EDIT:GNUmakefile and 'make flag' recipe:暗号++メーリングリストで今開いています。
Crypto ++テストスイートはマクロの値を出力します。これは、ライン310の周りに、validat1.cppから来ている:
cout << "AESNI_INTRINSICS == " << CRYPTOPP_BOOL_AESNI_INTRINSICS_AVAILABLE << endl;
をしかし、私はあなたが気づいていると思うと、ライブラリのビルド設定とビルド設定は異なる可能性があります。
ディストリビューションは、多くの場合、Autotool群を使用して構築しながら、暗号++は、メイクファイルを使用していることまた、注目に値します。ディストリビューションは独自のフラグを選択し、Crypto ++メイクファイルとは異なる場合があります。ディストリビューションを使用している場合は、*.pc
ファイルまたはそれに類するものをチェックすることができます。
関連して、CentOS 5からCentOS 7でテストします。CentOS 5はGCC 4.1を搭載していて、いくつかの点でGCCの種類のものがあります。たとえば、-march=native
を消費することはできません。
ありがとう、それはソースを調べた後、私の問題を確認しました。この状態を示すexternフラグを用意しておくとよいでしょう。 – PhilC
@PhilC - Makefileルールを追加して 'CXXFLAGS'をファイルに書き込むとどうなりますか?追加のステップ( 'make flags'のような)を実行する必要がありますが、それは' cxxflags.h'のようなファイルに入れられます。 – jww
私たちは2つのビルドライブラリを持っています.1つはAESNIを利用でき、もう1つは利用できません。私たちは、それぞれに静的にリンクする2つのバージョンのプログラムを構築します。実際に必要なのは、コンパイラフラグに基づいて設定されたextern bool/intフラグのように、実行時に利用できるものです。私たちは、AESNIなしで特別に構築されたライブラリとリンクするときにコンパイラ指令を追加することになりました。 ありがとうございます – PhilC