我看到这个问题可以通过添加-fPIC
来解决,但我尝试并解决了问题。我不经常使用makefile,所以也许我没有正确添加它。 (它的汇编代码)。
这是我的makefile:
PROGRAM = calc
ASFLAGS = -gstabs
CFLAGS = -g -Wall -pedantic
.PHONY: clean
$(PROGRAM): $(PROGRAM).o
gcc $(CFLAGS) -o $(PROGRAM) $(PROGRAM).o
$(PROGRAM).o: $(PROGRAM).s
as $(ASFLAGS) -o $(PROGRAM).o $(PROGRAM).s
clean:
rm -f *.o
rm -f $(PROGRAM)
rm -f *~
这就是问题所在:
/usr/bin/ld: calc.o: relocation R_X86_64_32S against `.data' 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 sta
我应该在makefile中添加-fPIC
的哪个位置?
我发现这个错误与其他代码只是不同的' .something'。