C 具有多个对象文件的动态库在加载过程中失败

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 -

与此类似:

我必须将多个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 -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)