1

ubuntu OSでEclipse CDTを使用しています。私が取り組んでいる API (Intel-Aes NI) があります。シェル ファイル (mk_lnx64_all.sh) を実行して API をビルドし、ライブラリ (.a ファイル) を取得しました。生成されたライブラリ ファイルは次のフォルダーにあります: /path/to/Intel_AESNI_Sample_Library_v1.2/intel_aes_lib/lib/x64/。そして、フォルダーから main() を含む aessample.c という名前のソース ファイルを実行する必要があります: /path/to/Intel_AESNI_Sample_Library_v1.2/intel_aes_lib/src/ 。eclipse 設定で、パスとライブラリ名を intel_aes64 (.a 拡張子なし) として追加しました。しかし、プロジェクトをビルドすると、次のようなエラーが発生します。

 make all 
Building target: Intel
Invoking: GCC C Linker
gcc -L/home/xxx/Documents/Intel_AESNI_Sample_Library_v1.2/intel_aes_lib/lib/x64 -o "Intel"  ./src/aessample.o ./src/intel_aes.o   -lintel_aes64
/usr/bin/ld: cannot find -lintel_aes64
collect2: error: ld returned 1 exit status
make: *** [Intel] Error 1 

次のコマンドでもターミナルで実行してみました:

gcc -I/home/xxx/Documents/Intel_AESNI_Sample_Library_v1.2/intel_aes_lib/include intel_aes.c -L/home/xxx/Documents/Intel_AESNI_Sample_Library_v1.2/intel_aes_lib/lib/x64 -lintel_aes64

上記のコマンドでも次のようなエラーが発生します。

/usr/bin/ld: cannot find -lintel_aes64
collect2: error: ld returned 1 exit status

そして、インターネットからダウンロードしてコマンドでインストールする方法を理解できません: apt-get install xxx-dev にライブラリをインストールするには /usr/local/lib 。私はどこで間違っていますか?私を助けてください。

4

2 に答える 2

1

-lnamelibname.a(または などの他のライブラリ接尾辞)の省略形ですlibname.dylib。で始まらないライブラリ ファイルを使用するにはlib、ソース ファイルまたはオブジェクト ファイルの場合と同じように、パスを指定するだけです。(この場合、 を使用-Lしたときに検索するパスを指定するため、 eitherは必要ありません-l。) したがって、次のコマンドを使用できます。

gcc -I/home/xxx/Documents/Intel_AESNI_Sample_Library_v1.2/intel_aes_lib/include intel_aes.c /home/xxx/Documents/Intel_AESNI_Sample_Library_v1.2/intel_aes_lib/lib/x64/intel_aes64.a
于 2013-06-11T04:14:55.297 に答える
0

しなければならないことがわかりました

make/shell/executable ファイルによって生成されたファイルの名前を手動で「intel_aes64.a」から「libintel_aes64.a」に変更します。

そして、それを Eclipse で動作させるには、そのパスとライブラリ名を「intel_aes64」として追加します (lib-prefix と .a 拡張子を除外することで通常とは異なります)。コンパイラは「lib」で始まるファイルのみをライブラリ ファイルと見なすためです。

于 2013-06-12T16:08:17.677 に答える