【发布时间】:2018-03-31 08:18:36
【问题描述】:
我正在使用命令:g++ --std=c++11 -fPIC -Iincludes parser.cpp lib/main-parser.o lib/lib.a
在 Debian 9 上编译 C++ 程序。但我收到以下错误消息:
/usr/bin/ld: lib/lib.a(csdocument.o): relocation R_X86_64_32 against '.rodata' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: error: ld returned 1 exit status
但是,我尝试添加 -fPIC 参数,但奇怪的是它给出了相同的错误消息,以及“使用 -fPIC 重新编译”
任何想法将不胜感激。我试过在我大学的 RedHat 系统上编译它,它在那里工作得很好。我认为这可能是缺少依赖项,但我一直找不到任何答案。
提前致谢
【问题讨论】:
-
你是如何编译 main-parser.o 的?
-
很遗憾,我无法提供这方面的信息,因为它是预编译的,我们没有收到关于它是如何编译的信息
-
如果没有使用过
-fPIC,它可以解释错误... -
我在不使用
-fPIC的情况下也收到相同的错误消息 -
您是否正在尝试构建共享对象?您的命令行中似乎没有任何相关的共享对象。