作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我当前的命令:
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/
我是一名优秀的程序员,十分优秀!