在我的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不理解变量或函数名中的一些错位语法。目标文件。
非常感谢任何关于如何解决这个问题的想法。
答案 0 :(得分:0)
这是x86_64系统上出现的问题。
尝试将-fPIC
添加到CFLAGS(CXXFLAGS)或IDE的编译器标记中。
该标志将使gcc(g ++)以64位编译。