升级GNU make至4.3后静态库构建异常问题求助
GNU Make 4.3静态库重复构建问题解决办法
不用重写整个Makefile,有几种方法可以恢复3.81版本的行为:
启用旧版静态库规则兼容模式
Make 4.2及以后版本新增了专门的兼容参数,直接在执行make时加上--enable-old-static-library-rule,或者设置环境变量MAKEFLAGS="--enable-old-static-library-rule",就能让make回到3.81那种直接检查库内目标文件的逻辑,不用修改任何Makefile内容。显式定义静态库构建规则
在你的Makefile里手动写清楚静态库的依赖和构建命令,替代make的隐式规则。比如:testlib.a: test1.o test2.o ar rcs $@ $^这样make会直接检查test1.o、test2.o和testlib.a的时间戳,只有当源文件更新导致.o文件变化时,才会重新生成静态库。
禁用隐式规则
在Makefile开头添加.SUFFIXES:(清空默认后缀规则),或者执行make时加上-r参数(禁用所有隐式规则),之后自己定义所有需要的编译、链接规则,也能避免触发4.3版本的新静态库隐式规则。
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

