在Linux下C/C++多模块编译链接的一种方法

以前一直不会C/C++工程在Linux下的编译,大概知道需要写Makefile,但是看见Makefile那么长就头疼,一直也没有学习。直到这次在GitHub上clone下的代码需要编译时,才不得不面对他。也是这次才发现可以使用automake工具进行自动生成Makefile。这对懒癌晚期的我可谓是一大福音。在学习使用的时候中间也踩了不少坑,在这里记录一下,省的后面忘记了。

0x00 主要工具

本blog主要记录实现方法,其中每一步使用工具的介绍通过链接给出,写的肯定比我好,记录一下,后面忘了回去回顾。其中使用的主要工具有:

1、autoscan,autoconf和automake:

https://www.ibm.com/developerworks/cn/linux/l-makefile/

2、Makefile.am文件:

https://www.jianshu.com/p/2f5e586c3402

0x01 过程

假设已经编写完成Makefile.am文件,具体如何编写参考上面的链接。
1、进入源文件目录使用autoscan命令,生成configure.scan
2、进入configure.scan文件,在AC_INIT宏之后加入AM_INIT_AUTOMAKE(Test, 1.0),这里Test是你要编译成的软件的名称,1.0是版本号,即你的这些源程序编译将生成一个软件Test-1.0版。然后退出,把configure.scan文件改名为configure.in。
3、运行aclocal,生成aclocal.m4文件。
4、运行autoconf命令,生成Configure文件。
5、运行autoheader
6、运行automake --add-missing命令。其中重点关注是否有Makefile.am:error: required file './XXX' not found提示,其中XXX为某些文件名。如果出现这样的提示,请自行创建该文件(亲测使用vim创建对应文件名的空文件即可)。否则在后面使用automake时会提示无法生成Makefile.in文件,导致后续过程无法继续。
7、运行./Configure命令,生成Makefile。
8、运行make命令,编译链接工程,生成可执行文件。

0x02 后记

以后就可以通过编写Makefile.am文件,自动生成符合GNU标准的UNIX/Linux标准的Makefile。记录一下,以后再出现这种情况就可以直接使用了。

END
本文作者:
文章标题:在Linux下C/C++多模块编译链接的一种方法
本文地址:http://hackerhome.top/index.php/archives/12/
版权说明:若无注明,本文皆由"岁月年华的秘密基地"原创,转载请保留文章出处。
最后修改:2021 年 02 月 19 日 02 : 52 PM
如果觉得我的文章对你有用,请随意赞赏