C 具有多个对象文件的动态库在加载过程中失败
与此类似: 我必须将多个C文件编译成一个动态共享库。 以下是我的Makefile中的内容:C 具有多个对象文件的动态库在加载过程中失败,c,gcc,makefile,shared-libraries,C,Gcc,Makefile,Shared Libraries,与此类似: 我必须将多个C文件编译成一个动态共享库。 以下是我的Makefile中的内容: _OBJS = file1.o file2.o CFLAGS += -Wall -I../include SHARED_LIB =libdynamic.so .PHONY: all all: (SHARED_LIB) $(SHARED_LIB): $(CC) -fPIC -c file1.c file2.c $(CFLAGS) $(CC) -shared -
_OBJS = file1.o file2.o
CFLAGS += -Wall -I../include
SHARED_LIB =libdynamic.so
.PHONY: all
all: (SHARED_LIB)
$(SHARED_LIB):
$(CC) -fPIC -c file1.c file2.c $(CFLAGS)
$(CC) -shared -o $(SHARED_LIB) -L$/lib -ldl $(_OBJS)
但是,生成的共享库没有属于file2.c的函数。我怎样才能让它工作
谢谢。您没有创建对象文件(*.o) 尝试:
另外,在
all:
target之后缺少一个“$”。那么,您必须添加分隔符:P Makefile非常挑剔,$(SHARED_LIB):
后面的行必须有一个硬制表符作为第一个字符(不能使用空格)。不幸的是,当我按照您的步骤操作时,我遇到了以下错误:arm linux gnueabihf gcc:fatal error:无法使用多个文件指定-o、-S或-E感谢Makefile提示。是的,我加了标签。太快,无法报告错误;)根据您正在尝试执行的操作和所遇到的错误,请参阅。也许这会帮助你看到你错过了什么。
$(SHARED_LIB):
$(CC) -fPIC -c file1.c -o file1.o $(CFLAGS)
$(CC) -fPIC -c file2.c -o file2.o $(CFLAGS)
$(CC) -shared -o $(SHARED_LIB) -L$/lib -ldl $(_OBJS)