首页 > Linux操作系统 > Linux操作系统 > Makefile实例详解
日期: 2015、4、19
目的: 熟悉Makefile
项目文件结构:
============================================================================
project --> 顶层路径
|
| | |
include lib src ---> Makefile 1级
| | |
所需头文件 所需库 |
|
basic app_main.c Makefile 2级 ---> 主逻辑模块 子模块basic
|
|
comm io Makefile 3级 --->把目标下所有的静态库文件, 编译生成动态库并复制到project/lib目录
|
io.c Makefile 4级--> 编译目录下所有文件,并生成.a文件
============================================================================
1级Makefile:
===========================================================
点击(此处)折叠或打开
点击(此处)折叠或打开
3级Makefile:
===========================================================
点击(此处)折叠或打开
4级Makefile:
===========================================================
点击(此处)折叠或打开
总结:
1、 通过export 定义变量,自动传递给子目录Makefile。 unexport停止传递。
2、 保存了$(CURDIR)当前目录路径。
3、 -Wl,-rpath=$(LIB_PATH) 通过编译时选项,可执行程序加载动态库时,默认搜索此路径。
如无此选项,默认搜索/usr/lib /usr/local/lib
4、 -L$(LIB_PATH) -lxxx # -L 编译库选项
5、 -I$(app_HEADERS) # 包含头文件选项
6、 当需要几个静态库合并成动态库里, 通过以下选项可以解决:
$(CCG) -shared -fPIC -Wl,--whole-archive $(SRC_OBJECT) -Wl,--no-whole-archive -Wl,-soname -Wl,$@ -o $@
且所有的静态库编译里需加入-fPIC选项。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30115060/viewspace-1585523/ ,如需转载,请注明出处,否则将追究法律责任。