创建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
请说明为什么会出现此错误。
答案 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