如何更改用于在 Python setup.py 中构建 C++ 扩展模块的链接器命令?

时间:2021-03-09 06:58:41

标签: python c++ build clang setup.py

python 模块构建命令

$ python setup.py build

显示链接器为“clang”,如下所示,但我想将其更改为“ld”。使用 clang++ 命令进行链接在我的 Mac 上不起作用,将其更改为“ld”有效。 我不知道如何将 setup.py 中的链接命令更改为使用“ld”。你能告诉我如何更改链接命令吗?

os.environ["CC"] = "clang"   # need this setting to use clang instead of gcc
os.environ["CXX"] = "clang"  # need this setting to use clang instead of gcc
...
...
clang++ -bundle -undefined dynamic_lookup -arch x86_64 -g build/temp.macosx-10.9-x86_64-3.8/Volumes/SSD256/Projects/MONAI.yoshi/monai/csrc/ext.o build/temp.macosx-10.9-x86_64-3.8/Volumes/SSD256/Projects/MONAI.yoshi/monai/csrc/GeodisTK/geodesic_distance.o build/temp.macosx-10.9-x86_64-3.8/Volumes/SSD256/Projects/MONAI.yoshi/monai/csrc/GeodisTK/geodesic_distance_2d.o build/temp.macosx-10.9-x86_64-3.8/Volumes/SSD256/Projects/MONAI.yoshi/monai/csrc/GeodisTK/geodesic_distance_3d.o build/temp.macosx-10.9-x86_64-3.8/Volumes/SSD256/Projects/MONAI.yoshi/monai/csrc/GeodisTK/geodesic_distance_interface.o build/temp.macosx-10.9-x86_64-3.8/Volumes/SSD256/Projects/MONAI.yoshi/monai/csrc/GeodisTK/util.o build/temp.macosx-10.9-x86_64-3.8/Volumes/SSD256/Projects/MONAI.yoshi/monai/csrc/filtering/bilateral/bilateralfilter_cpu.o build/temp.macosx-10.9-x86_64-3.8/Volumes/SSD256/Projects/MONAI.yoshi/monai/csrc/filtering/bilateral/bilateralfilter_cpu_phl.o build/temp.macosx-10.9-x86_64-3.8/Volumes/SSD256/Projects/MONAI.yoshi/monai/csrc/filtering/permutohedral/permutohedral.o build/temp.macosx-10.9-x86_64-3.8/Volumes/SSD256/Projects/MONAI.yoshi/monai/csrc/filtering/permutohedral/permutohedral_cpu.o build/temp.macosx-10.9-x86_64-3.8/Volumes/SSD256/Projects/MONAI.yoshi/monai/csrc/lltm/lltm_cpu.o build/temp.macosx-10.9-x86_64-3.8/Volumes/SSD256/Projects/MONAI.yoshi/monai/csrc/resample/pushpull_cpu.o -L/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/torch/lib -lc10 -ltorch -ltorch_cpu -ltorch_python -o build/lib.macosx-10.9-x86_64-3.8/monai/_C.so

1 个答案:

答案 0 :(得分:1)

您可以使用 LDSHARED 环境变量来设置链接器命令:

LDSHARED=/usr/bin/ld python setup.py build_ext

我建议您阅读 distutils 软件包的 the source code 以了解其工作原理。