开发日常makefile解决Makefile版本过高导致的编译问题

Posted Evan_ZGYF丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开发日常makefile解决Makefile版本过高导致的编译问题相关的知识,希望对你有一定的参考价值。

摘要:

在openEuler上降低makefile的版本
最近在openEuler编译时遇到makefile报错,但是相同的代码在老的CENTOS下时可以编译成功的。
排查时发现openEuler的“make -v”版本较高
计划降低make版本后,重新编译试试。



问题原因:

发现了一个很神奇的现象,
不同的编译机下,去执行相同的makefile,
这个makefile里面就是将“\\#include <stdio.h>  int main() return 0; ”这段字符输出到一个文件里
但是结果是不一样的,
一台编译机(openEuler)输出的结果是“\\#include <stdio.h>  int main() return 0; ”
另一台编译机(CENTOS)输出的结果是“#include <stdio.h>  int main() return 0; ”


  解决思路:

怀疑是makefile的问题?通过"make -v"对比两边的make版本差异

openEuler:

 CENTOS:


怀疑是shell的问题?通过“/bin/bash”对比两边的shell版本差异
openEuler:

 

 CENTOS:


解决方案:

在openEuler上安装make 3.82版本。
【开发工具】【make】make 3.82源码编译安装.note

以上是关于开发日常makefile解决Makefile版本过高导致的编译问题的主要内容,如果未能解决你的问题,请参考以下文章

开发日常makefile解决Makefile版本过高导致的编译问题

如何自己编写Makefile

Linux开发-makefile

MakeFile的通用版本写法

STM32CubeMx + makefile --- 开发环境搭建

Makefile