3

我当前的命令:

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
4

1 回答 1

2

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

c++ -fPIC -c algo_cython.cpp

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

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

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

于 2013-04-22T11:00:42.200 回答