任务
建立inc目录存放.h文件,src目录存放.c文件,obj目录存放.o文件,dynamicMakefile目录存放.out文件和.so文件以及makefile
要求有以下三个.c文件(sum.c,sub.c,mul.c)生成动态库并由mathTest.c调用。
答案
src=$(wildcard ../src/*.c)
obj=$(patsubst ../src/%.c,../obj/%.o,$(src))#%代表通配符,和*类似
all:result
result:mylib.so
gcc ../mathTest.c -o $@ -l mylib -L ./ -I ../inc#添加头文件发生在预处理阶段
mylib.so:${obj}
gcc -shared -o libmylib.so $^
export LD_LIBRARY_PATH=./
../obj/%.o:../src/%.c
gcc -c $< -o $@ -fPIC
clean:
-rm -rf ./result ./libmylib.so ${obj}
.PHONY:all clean
文章描述了一个C语言项目的基本目录结构,包括inc目录存储.h头文件,src目录存储.c源代码,obj目录存储编译后的.o目标文件,以及dynamicMakefile目录用于存放.out可执行文件和.so动态库文件及makefile。主要任务是将sum.c,sub.c,mul.c编译成动态库mylib.so,并由mathTest.c程序调用。编译过程中使用了gcc命令,指定了库和头文件路径。
1万+

被折叠的 条评论
为什么被折叠?



