关于configure 交叉编译配置问题
参考来源:https://blog.csdn.net/yxnyxnyxnyxnyxn/article/details/7979530
介绍
- configure是linux下编译的配置工具,通过参数配置编译的目标平台
- 这个configure是一个自动生成的脚本文件,所用的工具是autoconf和automake,这两个工具,根据configure.in和makefile.am文件(可能还需要makefile.in吧,我不太清楚),生成configure。如果你拿到的开源代码有configure,那么肯定也有configure.in和makefile.am,这两个,才是人写给人看的,configure是机器写给机器看的。
交叉编译configure参数解析
./configure --build=i686-pc-linux --host=arm-linux --target=i686-linux \
--enable-shared --prefix=$PREFIX \
--with-freetype-config=$PREFIX/bin/freetype-config \
--enable-libxml2 --with-arch=arm \
CFLAGS=-I/home/third_party/library/g-4.4.2/freetype/include-I/home/third_party/library/g-4.4.2/freetype/include/freetype2 \
第一行指定了交叉编译所用的编译器
第二行指定了依赖库所在的目录
最后一行是头文件所在目录,这个放在前面应该也可以……不过我没试过。
但是需要注意的是粗体的那几行,--build指明的是在什么环境下编译,--host是要编译到哪个环境,--target是在什么环境下运行。如果你要做交叉编译,这三个选项是一定要写上的,否则configure不知道自己是在进行交叉编译。
一般而言,我们只要指定 --host 就可以了(如果没有其他依赖的前提下)
记住:--host 指定的是交叉编译工具链的前缀
如何根据configure.ac和Makefile.am为开源代码产生当前平台的Makefile
如果你有一个configure.ac文件但没有configure文件,你可能需要运行autoreconf命令来生成configure脚本。
configure.ac文件是用于生成configure脚本的输入文件,它使用Autoconf工具来自动生成用于配置软件的脚本。在运行autoreconf命令之前,你需要确保已经安装了Autoconf工具。
要生成configure脚本,可以在终端中运行以下命令:
autoreconf -i
这将运行autoreconf命令,并使用configure.ac文件生成configure脚本。-i选项用于指定只生成缺失的文件。
如果一切顺利,你将在当前目录下生成一个新的configure脚本。现在,你可以运行./configure来配置软件,并继续进行后续的编译和安装步骤。
步骤
安装
apt install autoconf automake
//根据configure.in和Makefile.am生成makefile的步骤,基于UBUNTU 12.04
1.autoscan (可选)
2.aclocal
3.autoconf
4.autoheader(可选)
5.libtoolize --automake --copy --debug --force(可选)
6.automake --add-missing
7.autoreconf –f –i –Wall,no–obsolete(可选)
8../configure
简单的方式:
如果拿到的工程文件中,没有Makefile文件,而只有configure.in和Makefile.am文件,我们是不能够直接进行编译的,必须在UBUNTU等Linux系统下,根据configure.in和Makefile.am文件生成编译所需的Makefile文件。具体操作步骤如下:
1、执行autoscan,然后执行aclocal,产生aclocal.m4文件
aclocal是一个perl 脚本程序,它的定义是:“aclocal – create aclocal.m4 by scanning configure.ac”。 aclocal根据configure.in文件的内容,自动生成aclocal.m4文件。而aclocal.m4文件中,包含了生成configure文件所必须的宏。
2、执行autoconf,生成configure文件
autoconf会根据configure.in和aclocal.m4文件,生成configure文件。其实,autoconf就是把configure.in和aclocal.m4文件中定义的内容, 变成检查系统特性、环境变量、软件必须的参数的shell脚本。
3、执行automake命令,产生Makefile.in
具体命令为:automake –add-missing
automake会根据Makefile.am文件产生一些文件,包含最重要的Makefile.in。前面所生成的configure,会根据Makefile.in文件,来生成最终的Makefile文件。
4、执行configure命令,生成Makefile文件
这样,就产生了编译所需要的Makefile文件。运行make,即可编译。