静态链接python modu的问题

2024-09-21 01:11:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用SWIG将一些C++封装到Python模块中。我试图用静态链接库来构建它,这样它就可以被部署到一个使用更老的glibc/libc++/等的系统上。我可以让libgcc和libstdc++连接到静态链接,但我无法找到一种针对glibc的静态链接的方法。谷歌的解决方案似乎不是静态链接整个可执行文件,就是告诉我不要这样做。。。在

不管怎样,以下是我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(其中包括一些其他的):

^{pr2}$

libgsl是可以的,但是我如何让它静态地链接到其他的呢?在


Tags: pysrc链接setup静态staticcppglibc

热门问题