gpt4 book ai didi

python - 如何将 Python C 模块与 `ld` 链接。对 `__dso_handle' 的 undefined reference

转载 作者:太空狗 更新时间:2023-10-29 12:34:20 24 4
gpt4 key购买 nike

我当前的命令:

c++ -fPIC -c algo_cython.cpp
ld -shared algo_cython.o -L/usr/lib/gcc/x86_64-linux-gnu/4.7 -lc -lstdc++ -o algo_cython.so

错误:

algo_cython.o: In function `__static_initialization_and_destruction_0(int, int)':
algo_cython.cpp:(.text+0x83e4): undefined reference to `__dso_handle'
ld: algo_cython.o: relocation R_X86_64_PC32 against undefined hidden symbol `__dso_handle' can not be used when making a shared object
ld: final link failed: Bad value

最佳答案

使用选项 -fPIC 编译 algo_cython.cpp - 如果没有此标志,您将无法在英特尔 64 位中编译共享对象,因此编译行应为:

c++ -fPIC -c algo_cython.cpp

此外,我实际上会使用编译器驱动程序来生成共享对象,而不是直接调用 ld 即您可以使用:

c++ -shared algo_cython.o -L/usr/lib/gcc/x86_64-linux-gnu/4.7 -lc -lstdc++   -o algo_cython.so

除非您真的想要做一些编译器驱动程序无法驱动的事情,否则直接调用ld 不是您想要做的。

关于python - 如何将 Python C 模块与 `ld` 链接。对 `__dso_handle' 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16144160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com