Elf*_*yer 0 c makefile shared-libraries
我想将.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)
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助.
问题出在以下几行:
$(LIB): $(OBJ)
Run Code Online (Sandbox Code Playgroud)
扩展后,这将成为:
libmy.so : gcc -c -fPIC lib.c
Run Code Online (Sandbox Code Playgroud)
因此错误.
你可能想要的是:
OBJ = lib.o
Run Code Online (Sandbox Code Playgroud)
为了节省您必须手动将所有.c源文件转换为.o您可以使用这样的规则而不是OBJ = lib.o:
OBJ = $(SRC:%.c=%.o)
Run Code Online (Sandbox Code Playgroud)
这将创建一个变量,OBJ其中包含所有文件的列表,SRC其中任何.c扩展名都已更改为.o.例如.如果我们有,SRC = foo.c bar.c那么上面的规则将自动扩展为:
OBJ = foo.o bar.o
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2913 次 |
| 最近记录: |