概述
从学习Linux那一刻开始,一直就有人说,能不能写Makefile是考验你是否具备完成大型工程的能力。
makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。
makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令。
关于程序的编译和链接
下来我们来了解关于Makefile的书写
假设我们需要编译一个test.c文件,Makefile的编写方法如下
第一种写法
第二种写法
一般要使用静态链接库,只需要给依赖的文件名后面接一个XXX_static即可, 最后面再加上-XXX
现象:执行gcc静态编译程序时报错:
/usr/bin/ld: cannot find -lc
collect2: ld returned 1 exit status
make: * [gcc_dry2] Error 1
(或者调用Makefile编译时报错)
原因:程序链接需要静态库,系统没有安装静态库导致报错
解决:安装静态库
sudo yum install glibc-static
Makefile的执行只需要执行一句make语句即可进行编译,
./test_static //在前台运行 ./表示系统搜索可执行环境变量的路径
./test_static & //在后台运行
当需要改掉Makefile里面的依赖文件是只需在命令模式下进行替换:%s/test/main/g //这里是指将test替换为main
最后
以上就是传统白开水为你收集整理的Makefile的书写规则以及/usr/bin/ld: cannot find -lcsudo yum install glibc-static的全部内容,希望文章能够帮你解决Makefile的书写规则以及/usr/bin/ld: cannot find -lcsudo yum install glibc-static所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复