Wal*_*ter 5 c++ gcc linker-errors ld fpic
我正在使用命令行编译一个c ++程序
g++ -c prog.cc -std=c++11 -march=native -fPIC -fopenmp
Run Code Online (Sandbox Code Playgroud)
然后尝试通过创建共享对象
g++ prog.o -shared -fopenmp -o lib/libprog.so
Run Code Online (Sandbox Code Playgroud)
这一直都有效.但今天我得到:
/usr/bin/ld: prog.o: relocation R_X86_64_PC32 against undefined symbol
`_ZTVN12_GLOBAL__N_111handle_baseE' can not be used when making a shared
object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
符号_ZTVN12_GLOBAL__N_111handle_baseE
de-mangles to
vtable for (anonymous namespace)::handle_base
(handle_base
是在prog.cc中的匿名命名空间中定义的多态类,是的,我打电话dynamic_cast<handle_base>()
.)
我正在使用gcc版本4.7.0(GCC)和GNU ld(GNU Binutils; openSUSE 11.1)2.19.任何人都可以提供帮助(建议解决方案[除了没有共享对象或其他dynamic cast
])?