C 使用“英特尔aes API”时出错
我正在ubuntu操作系统中使用EclipseCDT。我有一个API(英特尔Aes NI),我正在工作。我已经运行了shell文件(mk_lnx64_all.sh)来构建API并获取库(.a文件)。生成的库文件位于文件夹:/path/to/Intel\u AESNI\u Sample\u library\u v1.2/Intel\u aes\u lib/lib/x64/中。我需要运行一个名为aessample.c的源文件,它的main()来自/path/到/Intel\u AESNI\u Sample\u Library\u v1.2/Intel\u aes\u lib/src/。我在eclipse设置中将路径和库名添加为intel_aes64(不带.a扩展名)。但当我构建项目时,仍然会出现如下错误:C 使用“英特尔aes API”时出错,c,eclipse,api,aes,static-libraries,C,Eclipse,Api,Aes,Static Libraries,我正在ubuntu操作系统中使用EclipseCDT。我有一个API(英特尔Aes NI),我正在工作。我已经运行了shell文件(mk_lnx64_all.sh)来构建API并获取库(.a文件)。生成的库文件位于文件夹:/path/to/Intel\u AESNI\u Sample\u library\u v1.2/Intel\u aes\u lib/lib/x64/中。我需要运行一个名为aessample.c的源文件,它的main()来自/path/到/Intel\u AESNI\u Sam
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
我尝试使用terminal执行以下命令:
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
我不知道如何从internet下载它,并使用以下命令安装它:apt get install xxx dev,以便在/usr/local/lib中安装库。我哪里做错了?请帮助我。
-lname
是libname.a
的缩写(或其他库后缀,如libname.dylib
)。要使用不以lib
开头的库文件,只需指定指向该库文件的路径,与使用源文件或对象文件时所做的相同。(在这种情况下,您也不需要-L
,因为它指定了使用-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
-lname
是libname.a
(或其他库后缀,如libname.dylib
)的缩写。要使用不以lib
开头的库文件,只需指定指向该库文件的路径,与使用源文件或对象文件时所做的相同。(在这种情况下,您也不需要-L
,因为它指定了使用-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
我知道我必须这么做 手动将make/shell/可执行文件生成的文件从“intel_aes64.a”重命名为“libintel_aes64.a”
然后,为了使其在eclipse中工作,将其路径和库名称添加为“intel_aes64”(通过排除lib前缀和.a扩展名,这是一种常用的方法)。因为编译器只将以“lib”开头的文件视为库文件。我发现我必须这样做 手动将make/shell/可执行文件生成的文件从“intel_aes64.a”重命名为“libintel_aes64.a”
然后,为了使其在eclipse中工作,将其路径和库名称添加为“intel_aes64”(通过排除lib前缀和.a扩展名,这是一种常用的方法)。由于编译器只将以“lib”开头的文件视为库文件。谢谢您的回复……我尝试编译您提供的命令,但它仍然给出了如下错误:xxx@ubuntu:~/workspace/AES-NI/src$gcc-I/home/xxx/Documents/Intel\u AESNI\u Sample\u Library\u v1.2/Intel\u AES\u lib/include Intel\u AES.c/home/xxx/Documents/Intel\u AESNI\u Sample\u lib/lib/x64/Intel\u aes64。gcc:错误:Intel\u AES.c:没有这样的文件或目录gcc:错误:/home/Anvesh/Documents/Intel_AESNI_Sample_Library_v1.2/Intel_aes_lib/lib/x64/Intel_aes64。a:没有这样的文件或目录gcc:致命错误:没有输入文件编译终止。@annonarcist:您需要为您的系统使用正确的路径。感谢您的回复……我尝试编译了您提供的命令,但它仍然给出了如下错误:xxx@ubuntu:~/workspace/AES-NI/src$gcc-I/home/xxx/Documents/Intel\u AESNI\u Sample\u Library\u v1.2/Intel\u AES\u lib/include Intel\u AES.c/home/xxx/Documents/Intel\u AESNI\u Sample\u lib/lib/x64/Intel\u aes64。gcc:错误:Intel\u AES.c:没有这样的文件或目录gcc:错误:/home/Anvesh/Documents/Intel_AESNI_Sample_Library_v1.2/Intel_aes_lib/lib/x64/Intel_aes64。a:没有这样的文件或目录gcc:致命错误:没有输入文件编译终止。@annaurcist:您需要为系统使用正确的路径。