【问题标题】:How to change the linker command for building a C++ extension module in Python setup.py?如何更改用于在 Python setup.py 中构建 C++ 扩展模块的链接器命令?
【发布时间】:2021-06-07 01:32:47
【问题描述】:

一个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

【问题讨论】:

  • os.environ["LD"] = ... ?
  • 好主意。我试过了,但不幸的是它没有用。
  • 您可能会发现这很有用:Choosing GCC version when building ( setup.py )
  • 我查看了页面,但没有任何有用的语句。此外,对于我的情况,它必须是“clang”。

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


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢。我试过了,但我无法让它工作。但总有一天我会的。您指向 distutils 代码很有帮助。当我在 Ubuntu 服务器上构建它时,没有出现这个问题。这是 MacOSX (Catalina) 的问题。
猜你喜欢
  • 1970-01-01
  • 2012-03-11
  • 1970-01-01
  • 2019-12-22
  • 1970-01-01
  • 2010-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多