2 u013610563 u013610563 于 2016.02.27 10:16 提问

C语言中编写makefile遇到的问题

自己在博客中写了由几个文件构成的代码,最后生成了一个静态库叫做libsum.a,里面保存着几个供main()
函数调用的函数,自己最后再把这个库和mian.c文件一起编译。可是makefile中一直报错
(具体的错误在博客最后面写出来了,我感觉不知道为什么?我用gcc -o 有问题吗?)
自己写的博客

感谢大家,感谢平台。

4个回答

WinsenJiansbomber
WinsenJiansbomber   2016.02.27 19:58

gcc -o 就是指定输出文件名。

u013610563
u013610563 那请问我写的哪个地方有错
接近 2 年之前 回复
WinsenJiansbomber
WinsenJiansbomber   2016.02.28 02:05
make: *** No rule to make target `main.c', needed by `main'.  Stop. 

错误代码显示makefile的规则问题,
makefile定义规则不正确,我的博文《Make自动化编译工具》也许有助力,专为你的问题写的。

WinsenJiansbomber
WinsenJiansbomber   2016.02.28 02:06

提示指明是 main 对应的规则有问题

WinsenJiansbomber
WinsenJiansbomber   2016.02.29 10:07

这样的报错还真是死性,正好对我胃口。

我的解决方法思路:

  • 将 main 规则修改成这样:main: libsum.a 就是拿掉main.c,因为错误提示就是加入这个依赖项产生的。
  • 注意一下GCC的命令行使用方法:Usage: gcc [options] file...你写的格式是倒过来的 GCC files... [options] 使用共享库的正确的gcc命令行: gcc -L/home/wuguannan/c/lib -o /home/wuguannan/c/main /home/wuguannan/c/source/main.c -lsum
  • 将main规则定义提到makefile的最前面,因为这才是最终想的输出,应该前置。
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!