0

在我的 sabayon 盒子上安装升级后(我不记得升级了什么)我在以前的工作代码上遇到了一个链接错误。

dmd  src/ast.o src/saturated.o src/queue.o src/operator.o src/tree.o src/heap.o src/bug.o src/levenshtein.o src/main.o src/lexer.o src/binary_tree.o src/sparse_vector.o src/stack.o src/integral_literal.o src/precedence_climbing.o src/traversal.o -ofmain
/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../x86_64-pc-linux-gnu/bin/ld: src/ast.o: relocation R_X86_64_32 against `.data' can not be used when making a shared object; recompile with -fPIC
src/ast.o: could not read symbols: Bad value
collect2: error: ld returned 1 exit status
--- errorlevel 1
make: *** [main] Error 1

我不知道 ld 的内部工作原理(或与此相关的目标文件),但我能想到的唯一问题是 ld 不理解目标文件中变量或函数名称中的一些错误语法。

非常感谢有关如何解决此问题的任何想法。

4

1 回答 1

0

这是在 x86_64 系统上出现的问题。

尝试添加-fPIC到您的 CFLAGS(CXXFLAGS) 或 IDE 的编译器标志。

该标志将使 gcc(g++) 编译为 64 位。

于 2014-04-07T06:22:11.257 回答