首页 > 解决方案 > “错误:在创建共享对象时无法使用针对 `.text' 的重定位 R_X86_64_32S”,同时创建动态库

问题描述

我正在尝试从源代码创建一个动态库,但出现以下错误。我只是想不通为什么。

ld: entry.o: relocation R_X86_64_32S against `.text' can not be used when making a shared 
object; recompile with -fPIC
entry.o: error adding symbols: Bad value
Makefile:12: recipe for target 'libdune.so' failed
make: *** [libdune.so] Error 1

我有源代码,我的 Makefile 如下所示

CC      = gcc
CFLAGS  = -Wall -fPIC -g -O3 -MD
LDFLAGS = -shared
OBJ     = entry.o dune.o vsyscall.o elf.o vm.o util.o page.o procmap.o debug.o apic.o
NOFPU_OBJ = trap.o

$(NOFPU_OBJ): EXTRA_FLAGS := -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -msoft-float

all: libdune.so

libdune.so: $(OBJ) $(NOFPU_OBJ)
        $(LD) -shared -o $(@) $(OBJ) $(NOFPU_OBJ)

clean:
        rm -f *.o test *.d libdune.so

-include *.d

%.o: %.c
        $(CC) $(CFLAGS) $(EXTRA_FLAGS) -o $@ -c $<

“relocation R_X86_64_32S against”链接错误谈到了几乎相同的问题,但就我而言,我有所需的源代码。有关如何使其工作的任何帮助?

标签: clinuxshared-librariesdynamic-library

解决方案


推荐阅读