Ubuntu16.04下使用autotools生成Makefile
来源:互联网 发布:在淘宝开店流程 编辑:程序博客网 时间:2024/06/15 09:14
.# Ubuntu16.04下使用autotools生成Makefile##
最近在网上买了一本旧书,书名《嵌入式Linux应用程序开发详解》,因为出版的时间是2006年,到现在已经过去十多年,书里的内容有些已经过时,而且书上的环境为Redhat,和我目前使用的系统环境不同(Ubuntu 16.04),因此按照书上第三章实验部分使用autotools生成Makefile过程中遇到了问题,没有生成相应的Makefile。后来参考网上的一些博客,把这个问题解决了,下面就简单叙述一下解决过程,简单分析一下出问题的原因。
使用工具:
autoscan
aclocal
autoconf
autoheader
automake
以上的工具就是生成Makefile要用到的autotools。
hello.c
#include "hello.c"int main(){ printf("Hello orld!\n"); return 0;}
hello.h
#include <stdio.h>
将hello.c和hello.h放在同一目录下:
下面就介绍生成Makefile的过程,以及注意点。
1、使用autoscan生成configure.scan
直接在目录下运行autoscan:
可以看到,运行autoscan后生成了log文件autoscan.log和我们要用到的configure.scan文件。
2、用configure.scan生成configure.ac文件
3、修改configure.ac文件
将configure.ac修改成如下内容:
截图:
# -*- Autoconf -*-# Process this file with autoconf to produce a configure script.AC_PREREQ([2.69])AC_INIT(hello, 1.0, lijintang1208@vip.qq.com)AM_INIT_AUTOMAKEAC_CONFIG_SRCDIR([hello.c])AC_CONFIG_HEADERS([config.h])# Checks for programs.AC_PROG_CC# Checks for libraries.# Checks for header files.# Checks for typedefs, structures, and compiler characteristics.# Checks for library functions.AC_CONFIG_FILES([Makefile])AC_OUTPUT
以上文件添加了两行内容,分别为第6行:AM_INIT_AUTOMAKE,第21行AC_CONFIG_FILES([Makefile])。
这部分在《嵌入式Linux应用开发详解》上没有讲到,而且书上是将configure.scan文件修改为configure.in文件,如果按照书上的内容来做,后面是不能生成用于生成Makefile的Makefile.in文件的。
还要讲一下第5行AC_INIT行。这行的参数hello代表要生成的程序名,1.0为程序版本号,最后的邮箱一般为bug报告的邮箱,一般为作者邮箱也可不写。
4、运行aclocal
可以看到运行后在目录下生成了aclocal.m4文件和autom4te.cache目录。
5、编写Makefile.am文件
文件内容:
AUTOMAKE_OPTIONS=foreignbin_PROGRAMS=hellohello_SOURCES=hello.c hello.h
6、运行autoheader
运行成功后生成config.h.in文件
7、使用touch命令生成automake必须的文件
运行成功后生成NEWS、README、AUTHORS和ChangeLog文件。
8、运行automake
运行automake -a之后可以看到目录下生成了其他一些文件和目录,其中Makefile.in就是最终生成Makefile的必须文件,如果第三步中不添加两条内容,在这步就不能生成Makefile.in文件也就导致了最后不能生成Makefile文件。
9、运行autoconf
运行autoconf之后,目录下生成了可执行文件configure。
10、运行可执行文件configure
可以看到运行configure文件之后,目录下生成了我们想要的Makefile文件。
下面就验证我们生成的Makefile是否正确。
11、编译代码并运行程序
通过make工具编译代码后查看目录下已经生成了hello程序,运行后正常打印hello world!说明使用以上步骤生成的Makefile可以运行。
通过autotools生成的Makefile内容也比自己编写的全面很多,里面有很多的预定义变量,这些变量的含义通常是固定的。
参考文献:
[1]:
http://blog.csdn.net/zhengqijun_/article/details/69952410
[2]: 《嵌入式Linux应用程序开发详解》 孙琼 编著.
- Ubuntu16.04下使用autotools生成Makefile
- Linux下使用Autotools生成Makefile
- 在Ubuntu下使用autotools生成Makefile
- 在Ubuntu下使用autotools生成Makefile
- 使用Autotools生成Makefile
- 使用autotools生成makefile
- 使用autotools生成Makefile
- ubuntu12.04使用autotools自动生成makefile
- 使用autotools简单生成Makefile
- autotools使用(自动生成Makefile)
- 使用autotools自动生成makefile
- 使用autotools工具自动生成makefile文件
- Makefile自动生成工具-----autotools的使用
- 自动生成Makefile----autotools的使用
- Makefile自动生成(autotools工具的使用)
- autotools使用(自动生成makefile)
- 10.使用autotools自动生成Makefile
- linux下使用autotools创建makefile文件
- C#网络编程系列文章(八)之UdpClient实现同步UDP服务器
- JavaScript实现H5游戏断线自动重连的技术
- java8新特性 --- stream(二)
- 创投日报:12月12日收录投融资项目22起
- CSDN 启动
- Ubuntu16.04下使用autotools生成Makefile
- C# DataTable数据量大,循环处理数据的时候优化速度
- Mac下PDF转EPS的方法
- 默认选中select 第一个option
- djangoReview(一)
- 简单封装的Stripe支付方法
- 最短路(Floyd、Dijstra,BellmanFord)
- 关于在MyEclipse中启动项目报错找不到ThreadLocalErrorLogAppender 的解决办法
- springMvc注解@RequestParam用法解析