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

Error in linking while creating a shared library of AES C file

创建 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 table。

/usr/bin/ld:libfile.so:版本化符号`AES_cbc_encrypt@@OPENSSL_1.0.0'

没有符号版本部分

/usr/bin/ld: final link failed: Nonrepresentable 输出部分 collect2:错误:ld 返回了 1 个退出状态

我是共享库的新手,所以请帮忙。

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

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

操作系统错误:./libfile.so:未定义的符号:SDSCListDevs

请说出为什么会出现这个错误。

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

您还需要 link 使用 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