makefile问题记录


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

Makefile 编译多个可执行程序

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值