gpt4 book ai didi

c - 使 `gcc' 需要 : *** No rule to make target `libmy.so' , 。停止

转载 作者:太空宇宙 更新时间:2023-11-04 06:03:42 25 4
gpt4 key购买 nike

我想将 .c 文件编译为 .so(共享库)。而且我不明白为什么,我有那个使我出错的 makefile:

LIB = libmy.so

SRC = lib.c

CC = gcc

OBJ = $(CC) -c -fPIC $(SRC)

all: $(LIB)

re: fclean all

$(LIB): $(OBJ)
$(CC) -shared -fPIC $(OBJ) -o $(LIB)

clean:
$(RM) $(OBJ)

fclean: clean
$(RM) $(LIB)

在此先感谢您的帮助。

最佳答案

问题出在下面一行:

$(LIB): $(OBJ)

展开后变成:

libmy.so : gcc -c -fPIC lib.c

因此出现错误。

您可能想要的是:

OBJ = lib.o

为了避免手动将所有 .c 源文件转换为 .o,您可以使用这样的规则代替 OBJ = lib.o:

OBJ = $(SRC:%.c=%.o)

这将创建一个变量 OBJ,其中包含 SRC 中所有文件的列表,其中任何 .c 扩展名更改为 .o 。例如。如果我们有 SRC = foo.c bar.c 那么上面的规则会自动扩展为:

OBJ = foo.o bar.o

关于c - 使 `gcc' 需要 : *** No rule to make target `libmy.so' , 。停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14660829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com