我试图将“C++ PARTUUDO库”链接到我的“C++演示模块”,这是一个Python可调用的库(模块)。在
我使用distutils执行此操作,为了执行静态链接,我将libportaudio添加到extra\u objects参数中,如下所示:module1 = Extension(
"demo",
sources=cppc,
# TODO remove os dependency
extra_compile_args=gccArgs,
# link against shared libraries
#libraries=[""]
# link against static libraries
extra_objects=["./clib-3rd-portaudio/libportaudio.a"]) # << I've added the static lib here
用“python”编译设置.py“生成”将导致以下链接器错误:
/usr/bin/ld:./clib-3rd-portaudio/libportaudio.a(pa_front.o):将R_X86_64_32重新定位到`。罗达塔.str1.8'不能在生成共享对象时使用;请使用-fPIC重新编译
/clib-3rd-portaudio/libportaudio.a:添加符号时出错:值错误
collect2:错误:ld返回1退出状态
因此,在这一点上,我尝试了显而易见的方法,将-fPIC标志添加到gccArgs中(注意上面的extra_compile_args=gccArgs),如下所示:
^{pr2}$
但是这会导致完全相同的错误,所以我猜-fPIC标志不是根本原因。我可能遗漏了一些琐碎的东西,但我有点迷路了,希望有人能帮忙。在