创建AES C文件的共享库时链接出错

时间:2017-03-14 14:43:52

标签: gcc openssl shared-libraries aes

创建AES共享库时遇到错误。使用以下命令:

gcc -Wall Test1.c x64 / libSESDAPI.a -fPIC -lssl -lcrypto

gcc -shared -o libfile.so a.out -nostartfiles

我收到以下错误:

/ usr / bin / ld:a.out(.eh_frame)中的错误;不会创建.eh_frame_hdr表。

/ usr / bin / ld:libfile.so:没有版本化符号的符号版本部分`AES_cbc_encrypt @@ OPENSSL_1.0.0'

/ usr / bin / ld:最终链接失败:输出中不可表示的部分 collect2:错误:ld返回1退出状态

我是共享图书馆的新手,所以请帮助。

编辑:我已编辑并添加了lcrypto和lssl

Edit2:通过在第一个命令中添加-c,现在解决了上述错误。但现在使用python访问.so文件会产生新的错误

OSError:./ libfile.so:未定义的符号:SDSCListDevs

请说明为什么会出现此错误。

1 个答案:

答案 0 :(得分:1)

您应该从对象文件创建共享库,而不是从可执行程序创建。

您还需要链接SSL库。

要使用的命令:

# Compile the source file, generate object file
gcc -Wall Test1.c -c -fPIC

# Link object file with libraries to create the shared object
gcc -shared -fPIC -o libfile.so Test1.o x64/libSESDAPI.a -lssl -lcrypto