我是 C 菜鸟,所以这可能是一个愚蠢的问题。我正在尝试编译 C 对象(.o 文件)的 .so 文件(共享库,如果我的术语正确的话),目的是通过 .so 将它们导入 Python ctypes
。我首先编译了 *.so
gcc -shared -o libvARAM.so ARAM.o ARAM_io.o io.o pre.o rule.o stat.o ART.o vARAM.o
这行得通,除了当我尝试通过 ctypes 加载时,我得到了奖励:
OSError: ./libvARAM.so: undefined symbol: max
经过一番挖掘,我意识到 max 不是标准的 C 函数。打电话ldd libvARAM.so
告诉我依赖项之一是libc.so.6
. 我创建了一个符号链接libc.so
,libc.so.6
然后尝试重新编译我的 .so 为
gcc -shared -o libvARAM.so ARAM.o ARAM_io.o io.o pre.o rule.o stat.o ART.o vARAM.o -llibc
这产生了
/usr/bin/ld: cannot find -llibc
如果我也尝试会产生同样的错误-L/lib/i386-linux-gnu/ -llibc
。我知道这个线程,但觉得它与我的情况无关,因为解决方案是生成文件。如果这很重要,我正在使用 Xubuntu。
真诚感谢任何帮助!