阅读目录
Makefile 编译参数
Makefile 打印时间
TIME = $(shell date)
all:
@echo "$(TIME)"
all:
@echo "$(shell date)"
$(warning $(shell date))
Makefile 打印
使用info/warning/error增加调试信息
输出打印信息
$(info xxxxx) #不会打印行号
$(warning xxxxx) #会打印行号
$(error xxxxx) #会停止当前的makefile编译
例如:
$(warning abcd1234)
输出打印变量
$(info $(XXX)) #不会打印行号
$(warning $(XXX)) #会打印行号
$(error $(XXX)) #会停止当前的makefile编译
例如:
$(warning $(shell date))
注意:变量名,一定要加括号。不加的话,可以发现前面都无法输出变量的值。
使用echo增加调试信息
echo只能在target:后面的语句中使用,且前面是个TAB
方法1: @echo “start the compile”
方法2: @echo $(files)
Makefile echo和@echo
echo:会在shell中显示echo这条命令和这条命令的输出结果
@echo:不会在shell中显示echo这条命令,但是会显示命令的输出结果
echo_test:
echo "hello world"
echo_test_with_address:
@echo "hello world"
1、makefile 报错:skipping incompatible
https://blog.youkuaiyun.com/wenqiang1208/article/details/75535955
解决方法:objdump -p libmylib.a 看一下该库的版本是32为还是64位的,或是ARM版还是…等等。仔细分析一下。你就会恍然大雾。(我的碰到的问题是:编译器选择的是64版,但是xxx.a是32版,当然不兼容)
原因:makefile编译出来的静态库是编译服务器默认的x86_64位的,并非指定的 mipsel-linux-
,说明makefile写的有问题;
2、makefile -m32
https://blog.youkuaiyun.com/holandstone/article/details/7956109
3、Makefile 中 -wl ,rpath 以及 O0 O1 O2 O3 Os 的用法
https://blog.youkuaiyun.com/sdc20102010/article/details/56833279
再makefile中一般默认的 lib 的加载路径是/lib /usr/lib 如果想要改变程序运行时的libs的加载路径 就需要用到 -wl , rpath 参数来添加lib 加载路径。
O0 O1 表示在不影响编译速率的前提下尽可能的优化程序的大小和运行速率。
O2 表示在牺牲部分编译速率的前提下 支持配置优化参数的优化 尽可能的提高运行速率。
O3 表示 采取多项量算法 提高程序的运行速率(他不惜增大程序的大小)
Os 和O3一样只不过他不会为了以为的提高程序运行速率二曾大程序的大小。
3、makefile 选择编译器
搜索:makefile 选择编译器
https://blog.youkuaiyun.com/alss1923/article/details/78964244
4、Makefile中ranlib的作用详解
https://blog.youkuaiyun.com/qq_34595352/article/details/88027689
5. Makefile foreach函数
https://blog.youkuaiyun.com/FPGATOM/article/details/84173094