编译错误:重定位R_X86_64_32S对`.data'制作共享对象时不能使用;用-fPIC重新编译

时间:2018-01-14 10:30:47

标签: assembly linker-errors x86-64

我看到这个问题可以通过添加-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'。

0 个答案:

没有答案