免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2925 | 回复: 5
打印 上一主题 下一主题

linux下makefile的编写小结 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-10 22:17 |只看该作者 |倒序浏览
今天学习linux的makefile文件的编写时终于搞懂了两个文件的makefile怎么编写,现分享如下。有不足的地方还请各位多多指正。
要写一个包含两个文件的makefile文件,两个文件分别如下:
func.h文件:
#include<stdio.h>
int add(int m)
{
        int i;
        int sum;
        for(i=0;i<m;i++)
        {
                sum+=i;
                printf("add result is %d!\n",sum);
        }
}
hello.c文件如下:
#include<stdio.h>
#include"func.h"
void fun1(int a)
{
        int i;
        int j=a;
        int sum=0;
        for(i=0;i<j;i++)
        {
                sum+=i;
                printf("sum is %d.\n",sum);
        }
}
int main()
{
        printf("this is the first function !\n");
        fun1(10);
        add(10);
        return 0;
}
makefile文件如下:
hello:hello.o
          gcc hello.o -o hello
hello.o:hello.c func.h
          gcc -c hello.c
此外可以用autotools自动生成makefile文件,方法如下:
1、首先检查是否安装autotools工具,autotools工具主要包括autoscan,acloacl,autoconf,autoheader等
用which命令查看,例:which autoscan,通常在/usr/bin/autoscan目录下。
2、运行命令/usr/bin/autoscan,生成configure.scan文件。修改其中的AC_INIT为AC_INIT(hello,1.0)
添加AM_INIT_AUTOMAKE(hello,1.0),修改AC_OUTPUT(makefile)。
3、将configure.scan改名为configure.in
4、运行aclocal命令。
5、运行autoconf命令。
6、运行autoheader命令
7、用vi命令编译makefile.am文件;如下:
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=hello
hello_SOURCES=hello.c func.h
8、运行automake -a命令
9、运行./configure文件。
到此makefile文件就自动生成了。可以应用以下命令进行测试:
(1)make
(2)make install
(3)make clean

评分

参与人数 1可用积分 +4 收起 理由
chenyx + 4 我很赞同

查看全部评分

论坛徽章:
0
2 [报告]
发表于 2011-07-10 23:11 |只看该作者
总结帖子  必要的顶!   留参考!

论坛徽章:
0
3 [报告]
发表于 2011-07-11 00:07 |只看该作者
回复 1# liuwenping4261
autoconf 确实是不错的.
但是:autoscan,acloacl,autoconf,autoheader过程,如果每次都人工敲,还是有点烦的.
我之前写了一个简单的wrap,把autoconf过程生成"configure"的过程,写了个脚本.
借用楼主的代码,我写了个demo. 楼主也可以试试这个.
autoconf_wrap_demo.tar.bz2 (1.41 KB, 下载次数: 46)

用法:运行"gen_configure.sh" 可以生成configure文件.
添加文件: 只要修改"_configure.mk".
即对应修改:
AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=hello
hello_SOURCES=hello.c func.h
即可.

不过,如果是大项目,还是用"Anjuta"来生成大的项目比较方便.

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
4 [报告]
发表于 2011-07-11 07:51 |只看该作者
楼主总结的不错,赞一个!

论坛徽章:
0
5 [报告]
发表于 2011-07-11 08:46 |只看该作者
回复 3# bbxyard


    先顶下,这个应该比我写的那个简单好多。不过我刚开始学,还没有研究这么深入。以后多向你学习啊。

论坛徽章:
0
6 [报告]
发表于 2011-07-11 08:47 |只看该作者
回复 4# chenyx


    呵呵。大家一起学习吧。以后有问题还要大家多多指教啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP