相关疑难解决方法(0)

使用-fPIC选项重新编译,但该选项已在makefile中

我做make时遇到这个错误:

relocation R_X86_64_32 against `vtable for Torch::MemoryDataSet' can not be used 
when making a shared object; recompile with -fPIC
Run Code Online (Sandbox Code Playgroud)

它说我应该重新编译-fPIC选项.我这样做,将-fPIC选项添加到CFLAGSCXXFLAGS,但我仍然得到相同的错误.有什么方法可以解决这个问题吗?我已经看到这个问题与使用64位机器有关,而且我确实使用了一个.

makefile recompile fpic

21
推荐指数
2
解决办法
3万
查看次数

链接器错误"重定位R_X86_64_PC32对未定义的符号"尽管使用-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_baseEde-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])?

c++ gcc linker-errors ld fpic

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

fpic ×2

c++ ×1

gcc ×1

ld ×1

linker-errors ×1

makefile ×1

recompile ×1