我使用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是可以的,但是我如何让它静态地链接到其他的呢?在
目前没有回答
相关问题 更多 >
编程相关推荐