静态链接python模块时出现问题 我使用SWIG将一些C++封装到Python模块中。我正试图用静态链接库来构建它,这样就可以将它部署到一个使用较旧的glibc/libc++/等的系统中。我可以将libgcc和libstdc++设置为静态链接,但我无法找到一种针对glibc的静态链接方法。谷歌解决方案似乎要么是静态链接整个可执行文件,要么是告诉我不要这样做

静态链接python模块时出现问题 我使用SWIG将一些C++封装到Python模块中。我正试图用静态链接库来构建它,这样就可以将它部署到一个使用较旧的glibc/libc++/等的系统中。我可以将libgcc和libstdc++设置为静态链接,但我无法找到一种针对glibc的静态链接方法。谷歌解决方案似乎要么是静态链接整个可执行文件,要么是告诉我不要这样做,python,c++,gcc,Python,C++,Gcc,无论如何,这里是我的setup.py cargs = ['-O3','-fPIC','-std=c++11'] largs = ['-lgsl','-lgslcblas','-static-libgcc','-static-libstdc++','-Bstatic -lc'] StopPow_module = Extension('_StopPow', sources=['StopPow_wrap.cxx', '../src/StopPow.cp

无论如何,这里是我的
setup.py

cargs = ['-O3','-fPIC','-std=c++11']
largs = ['-lgsl','-lgslcblas','-static-libgcc','-static-libstdc++','-Bstatic -lc']

StopPow_module = Extension('_StopPow',
                        sources=['StopPow_wrap.cxx', '../src/StopPow.cpp', '../src/StopPow_Plasma.cpp', '../src/StopPow_PartialIoniz.cpp','../src/StopPow_SRIM.cpp', '../src/StopPow_BetheBloch.cpp', '../src/StopPow_LP.cpp', '../src/StopPow_AZ.cpp','../src/StopPow_Mehlhorn.cpp','../src/StopPow_Grabowski.cpp','../src/StopPow_Zimmerman.cpp','../src/StopPow_BPS.cpp','../src/AtomicData.cpp','../src/PlotGen.cpp', '../src/Spectrum.cpp'],
                        extra_compile_args = cargs,
                        extra_link_args = largs,
                        language="c++" )

setup (name = 'StopPow',
   version = '0.2',
   description = """Stopping power library""",
   ext_modules = [StopPow_module],
   py_modules = ["StopPow","StopPow_Plasma","StopPow_PartialIoniz","StopPow_SRIM","StopPow_BetheBloch","StopPow_LP","StopPow_AZ","StopPow_Mehlhorn","StopPow_Grabowski","StopPow_Zimmerman","StopPow_BPS","AtomicData","PlotGen","Spectrum"],
   )
哪一个构建还可以,但仍然需要libc(除其他几个之外):

libgsl是可以的,但是我怎样才能让它与其他的静态链接呢

ldd _StopPow.cpython-33m.so 
    linux-vdso.so.1 =>  (0x00007fff309fe000)
    libgsl.so.0 => /usr/lib/libgsl.so.0 (0x00007f99e8c0b000)
    libgslcblas.so.0 => /usr/lib/libgslcblas.so.0 (0x00007f99e89bf000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f99e86ba000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f99e849d000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f99e80d5000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f99e941c000)