Linux下configure编译代码来龙去脉

目录

1 Autotools相关工具链

1.1  Autotools

1.2 其他相关工具

2 操作实例

2.1 安装autotools工具

2.2 准备源文件

2.3 生成configure.ac文件

2.4 生成aclocal.m4文件

2.5 生成config.h.in文件

2.6 生成Makefile.in文件

2.7 生成configure文件

2.8 生成Makefile文件

2.9 编译和测试

3 扩展

3.1 config.h中定义一个宏

3.2 运行configure命令

4 总结


我们经常从网上下载的源码,在其根目录有一个configure文件,直接执行configure文件,会产生一个makefile文件,再执行make就生成目标文件了。可是这个configure文件看着很复杂,其实它并不是手动编写的,那它是怎么来的呢,如果我们自己想发布一份源代码,需要怎么去生成configure呢

1 Autotools相关工具链

1.1  Autotools

  • autoscan
    可以通过调用autoscan命令,得到一个初始化的configure.scan文件。然后重命名为configure.ac后,在此基础上编辑configure.ac。
    autoscan会扫描源码,并生成一些通用的宏调用,输入的声明,以及输出的声明。尽管autoscan十分方便,但是没人能够在构建之前,就把源码完全写好。
    因此,autoscan通常用于初始化configure.ac,即生成configure.ac的雏形文件configure.scan
  • aclocal
    configure.ac实际是依靠宏展开来得到configure。因此,能否成功生成,取决于宏定义是否能够找到。
    autoconf会从自身安装路径下寻找事先定义好的宏。然而对于像automake,libtool,gettex等第三方扩展宏,autoconf便无从知晓。
    因此,aclocal将在configure.ac同一个目录下生成aclocal.m4,在扫描configure.ac过程中,将第三方扩展和开发者自己编写的宏定义复制进去。
    如此一来,autoconf遇到不认识的宏时,就会从aclocal.m4中查找
  • autoconf
    autoconf是 用来产生configure文件的 .configure是 一个脚本,它能设置
    源程序来适应各种不同的操作系统平台,并且根据不同的 系统来产生合适的 Makefile,从而可以使
    你的源代码能在不同的操作系统平台上被编译出来.
  • autoheader
    autoheader命令扫描configure.ac文件,并确定如何生成config.h.in。每当configure.ac变化时,都可以通过执行autoheader更新config.h.in。
    在configure.ac通过AC_CONFIG_HEADERS([config.h])告诉autoheader应当生成config.h.in的路径,
    config.h包含了大量的宏定义,其中包括软件包的名字等信息,程序可以直接使用这些宏。
    更重要的是,程序可以根据其中的对目标平台的可移植相关的宏,通过条件编译,动态的调整编译行为。
  • automake
    手工编写Makefile是一件相当繁琐的事情,并且随着项目的复杂程序变大,编写难度越来越大。automake工具应运而生。
    可以编辑Makefile.am文件,并依靠automake来生成Makefile.in

1.2 其他相关工具

  • m4
    m4是一个经典的宏工具。autoconf正是构建在m4之上,可以理解为autoconf预先定义了大量的,用户检查系统可移植性的宏,这些宏在展开就是大量的shell脚本。
    所以编写configure.ac就需要对这些宏掌握熟练,并且合理调用。
  • libtool
    libtool试图解决不同平台下,库文件的差异。libtool实际是一个shell脚本,实际工作中,调用了目标平台的cc编译器和链接器,以及给予合适的命令行参数。
    libtool可以单独使用,也可以跟autotools集成使用。
  • autoreconf
    早期autoreconf并不存在,软件开发者就自己编写脚本,按照顺序调用autoconf,autoheader,automake等工具.
    autoreconf程序能够自动按照合理的顺序调用autoconf,automake,aclocal程序

通过autotools生成makefile文件的流程图如下:

2 操作实例

2.1 安装autotools工具

sudo apt install automake

2.2 准备源文件

源文件随便准备了两个,一个主程序文件,一个封装接口文件,目录结构如下:

configure-learn/
├── hello.c
├── hello.h
└── main.c

0 directories, 3 files

2.3 生成configure.ac文件

源文件创建后,我们就可以通过autoscan命令对该目录进行扫描,生成configure.scan文件。首先切换到该目录,然后执行命令如下:

autoscan

执行成功后可以看出多了两个文件,一个是autoscan.log,这个是日志文件;另外一个是configure.scan文件,这个是扫描的结果文件。

这里configure.scan其实是一个模板文件,我们需要手动修改其内容,并将其改名为configure.ac。具体需要做:

1) AC_INIT里面的参数: AC_INIT(main, 1.0.0, 2222222222@163.com);

2) 添加宏AM_INIT_AUTOMAKE;

3) 在AC_OUTPUT后添加输出文件Makefile。

修改前:

#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.69])
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_CONFIG_SRCDIR([main.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_OUTPUT

修改后:

#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.69])
AC_INIT(main, 1.0.0, 2222222222@163.com)
AC_CONFIG_SRCDIR([main.c])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE(main, 1.0.0)

# 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_OUTPUT(Makefile)

下面给出本文件的简要说明(所有以”#”号开始的行为注释):
(1)AC_PREREQ

声明本文件要求的autoconf版本,本例使用的版本为2.69。

(2)AC_INIT

用来定义软件的名称和版本等信息,”FULL-PACKAGE-NAME”为软件包名称,”VERSION”为软件版本号,”BUG-REPORT-ADDRESS”为BUG报告地址(一般为软件作者邮件地址)。

(3)AC_CONFIG_SRCDIR

用来侦测所指定的源码文件是否存在,来确定源码目录的有效性。此处为当前目录下的hello.c。

(4)AC_CONFIG_HEADER

用于生成config.h文件,以便autoheader使用。

(5)AM_INIT_AUTOMAKE

检查automake尝试Makefile时的必要的工具。 例如:AM_INIT_AUTOMAKE([-Wall -Werror foreign subdir-objects]) , 一些可选的选项:

选项    解释
-Wall    打开全部警告
-Werror    将警告当错误处理
-foreign    放宽一些GNU标准需求
-1.11.1    需要automake的最低版本
-dist-bzip2    在使用make dist和make distcheck期间同时创建tar.bz2存档
-tar-ustar    使用ustar格式创建tar存档
(6)AC_PROG_CC

用来指定编译器,如果不指定,选用默认gcc。
(7)AC_OUTPUT

用来设定 configure 所要产生的文件,如果是makefile,configure会把它检查出来的结果带入makefile.in文件产生合适的makefile。使用Automake时,还需要一些其他的参数,这些额外的宏用aclocal工具产生。


(8)AC_DEFINE

格式: AC_DEFINE(VARIABLE, VALUE, DESCRIPTION)

输出宏定义到config.h中。

(9)AC_CHECK_HEADERS

格式:AC_CHECK_HEADERS(HEADERS…)

检查头HEADERS并且给每一个发现的头文件定义#define HAVE_HEADER_H

例如:AC_CHECK_HEADERS([unistd.h windows.h])

这个宏将在当前建造环境下检查unistd.h,windows.h是否存在。并将两个参数写入到配置头文件中。一般是config.h,你可以使用AC_CONFIG_HEADERS([headers])来指定。

AC_CONFIG_HEADERS([config.h])

如果存在就会出现在config.h中例如下面:

/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1

/* Define to 1 if you have the <windows.h> header file. */
#define HAVE_WINDOWS_H 1

(10) AC_CONFIG_FILES

格式:AC_CONFIG_FILES([Makefile sub/Makefile])

写入Makefile.am和sub/Makefile.am文件

(11) AC_CHECK_FUNC

格式: AC_CHECK_FUNCS (function…, [action-if-found], [action-if-not-found])

检查函数是否存在,如果存在执行动作action-if-found,没有发现执行动作action-if-not-found。
如果你没给出action-if-found和action-if-not-found,在发现函数的时候会定义对应的变量,以HAVE_开头,函数的名称都转换成大写。例如:

AC_CHECK_FUNCS(perror gettimeofday clock_gettime memset socket getifaddrs freeifaddrs fork)

如果发现clock_gettime将会定义变量 #define HAVE_CLOCK_GETTIME 1 在对应的配置头文件中。
如果没发现将不会定义。但是也会有一个注释行 /* #undef HAVE_CLOCK_GETTIME*/

(12)AC_ARG_WITH

格式: AC_ARG_WITH (package, help-string, [action-if-given], [action-if-not-given])

这个宏可以给configure增加 –with-package 这样模式的参数。很多软件都有可选项用来打开扩展功能,AC_ARG_WITH就是干这个的。它的第一参数给出扩展包的名称,出现在–with-后面。第二个参数给出一个参数说明,用在./configure –help中。[action-if-given]如果有该选项就被执行,[action-if-not-given]如果没有加这个选项就执行。
例如:

AC_ARG_WITH([militant],
    [AS_HELP_STRING([--with-militant],
        [Enable militant API assertions])],
    [zmq_militant="yes"],
    [])

if test "x$zmq_militant" = "xyes"; then
    AC_DEFINE(ZMQ_ACT_MILITANT, 1, [Enable militant API assertions])
fi

AS_HELP_STRING([–with-militant],
[Enable militant API assertions])
定义一个帮助字串,将在configure –help中被显示出来。
它可以这么使用configure –with-militant,这导致zmq_militant=”yes”被执行,随后通过下面的if语句在config.h中定义一个宏 #define ZMQ_ACT_MILITANT 1。

(13) AC_ARG_ENABLE

格式:AC_ARG_ENABLE (feature, help-string, [action-if-given], [action-if-not-given])

这个宏可以为configure增加–enable-feature 或者 –disable-feature这样的选项。如果configure中加了给定的选项,就执行action-if-given,否则执行action-if-not-given。

AC_ARG_ENABLE([eventfd],
    [AS_HELP_STRING([--disable-eventfd], [disable eventfd [default=no]])],
    [zmq_enable_eventfd=$enableval],
    [zmq_enable_eventfd=yes])

if test "x$zmq_enable_eventfd" = "xyes"; then
    # Check if we have eventfd.h header file.
    AC_CHECK_HEADERS(sys/eventfd.h,
        [AC_DEFINE(ZMQ_HAVE_EVENTFD, 1, [Have eventfd extension.])])
fi

(14) 共享库和静态库

编译动态库或者静态库,你需要在你的configure.ac中加入下面的宏:

LT_PREREQ([2.4.0])
LT_INIT([disable-static win32-dll dlopen])
AC_PROG_LIBTOOL

LT_PREREQ给出一个版本需求检查。LT_INIT可以实现一些配置,例如win32-dll允许建造动态库,disable-static默认关闭静态库的建造。默认动态库和静态库是同时打开的。
AC_PROG_LIBTOOL检查libtool脚本。做完这些在你的configure中会增加一些选项–enable-static , –enable-shared。
细节参数可以看: libtool 官方文档

2.4 生成aclocal.m4文件

直接执行aclocal命令即可生成该文件:

aclocal

aclocal.m4是一个宏定义文件,该文件内容的生成依赖于configure.ac文件。aclocal会根据confgure.ac文件的内容,搜索本地的m4文件(通常在类似目录下面/usr/share/aclocal-1.15/),然后生成一个在本目录下面使用的aclocal.m4文件。

2.5 生成config.h.in文件

该文件的生成比较简单,直接在命令行执行如下命令即可:

autoheader

这个文件是一个模板文件,后面会利用该文件生成config.h文件。该文件包含一些宏定义。

2.6 生成Makefile.in文件

生成Makefile.in文件之前需要手动创建一个 Makefile.am 文件,该文件用于描述源文件与目标文件的关系。本文对应的Makefile.am文件如下所示:

#AUTOMAKE_OPTIONS=foreign
bin_PROGRAMS=main
main_SOURCES=main.c hello.c hello.h

(1)AUTOMAKE_OPTIONS 设置Automake的选项。由于GNU对自己发布的软件有严格的规范,比如必须附带许可证声明文件COPYING等,否则Automake执行时会报错。Automake提供了3种软件等级:foreign、gnu和gnits,供用户选择,默认等级为gnu。本例使用foreign等级,它只检测必须的文件。
(2)bin_PROGRAMS 定义要产生的执行文件名。如果要产生多个执行文件,每个文件名用空格隔开。
(3)hello_SOURCES 定义”main”这个执行程序所需要的原始文件。如果”main”这个程序是由多个原始文件所产生的,则必须把它所用到的所有原始文件(包括头文件)都列出来,并用空格隔开。例如:若目标体”main”需要”main.c”、”hello.c”、”hello.h”两个依赖文件,则定义main_SOURCES=main.c hello.c hello.h。

可以看出该文件非常简单,这比写一个Makefile要简单的多。

运行下面命令生成Makefile.in:

automake --add-missing

加上–add-missing参数后,会补全缺少的脚本。

出现错误:

root@zl-src:~/vstdio-workspace/configure-project/configure-learn$ automake --add-missing
configure.ac:8: warning: AM_INIT_AUTOMAKE: two- and three-arguments forms are deprecated.  For more info, see:
configure.ac:8: http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_005fINIT_005fAUTOMAKE-invocation
configure.ac:11: installing './compile'
configure.ac:8: installing './install-sh'
configure.ac:8: installing './missing'
Makefile.am: installing './INSTALL'
Makefile.am: error: required file './NEWS' not found
Makefile.am: error: required file './README' not found
Makefile.am: error: required file './AUTHORS' not found
Makefile.am: error: required file './ChangeLog' not found
Makefile.am: installing './COPYING' using GNU General Public License v3 file
Makefile.am:     Consider adding the COPYING file to the version control system
Makefile.am:     for your code, to avoid questions about which license your project uses
Makefile.am: installing './depcomp'

分析修改

因为上面Makefile.am文件里面将第一行AUTOMAKE_OPTIONS的设置屏蔽了,默认是gnu,而gnu有标准的软件发布规范,所以需要相应的文件,这里我们可以打开第一行的设置,更换规范检测配置,或者手动暂时创建需要的文件也行,下面是手动创建的方式,手动创建需要的文件,需要这几个文件,是正规软件发布需要的:

touch NEWS README AUTHORS ChangeLog

再次执行automake就可以成功生成Makefile.in文件了。如果要生成多个目标文件,需要在这里写多个源文件与目标文件的对应关系。这种情况是非常常见的,比如一些复杂的项目中通常会包含主程序,测试程序,动态库等等。

2.7 生成configure文件

上述文件都生成后就可以生成configure文件了。该文件是用于生成Makefile的一个脚本。我们在很多开源项目中肯定都遇到过。在开源项目中通常都有一个生成好的configure文件,我们只需要执行该文件就可以生成Makefile。

生成configure文件的方法很简单,我们执行如下命令即可:

autoconf

至此我们完成了生成Makefile的所有准备工作。

2.8 生成Makefile文件

在该目录下面运行configure脚本,即可生成Makefile文件。

./configure
root@zl-src:~/vstdio-workspace/configure-project/configure-learn$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands

2.9 编译和测试

直接执行make即可:

3 扩展

3.1 config.h中定义一个宏

比如:在config.h中定义一个宏 HAVE_TEST为1

(1)修改configure.ac,添加如下代码:

AC_DEFINE([HAVE_TEST], [1],
        [Define to 1 if you have the test function.])

(2)运行autoheader,重新生成config.h.in文件

(3)运行autoconf,重新生成configure文件

(4)重新运行 ./configure,更新config.h文件

3.2 运行configure命令

直接在Ubuntu上运行的话,这样是可以的,但是实际开发中会涉及一些arm系统之类的,这个时候我们可能就需要设置一些参数。譬如enbale/disbale一些特性,设置交叉编译平台(例如–host=linux-mips),设置编译安装目录(例如–prefix=path_to_your_build_directory)具体可以查看help信息 。

4 总结

需要项目维护者手动修改的文件除了可选的NEWS README AUTHORS ChangeLog文件之外,就是configure.ac文件和每个源码文件夹下的Makefile.am文件了。

u010787096
关注 关注
  • 16
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
关于在嵌入式Linux编译dhcp报错“cannot check for file existence when cross compiling”的初步研究...
dengliangpu2599的博客
09-22 1300
前言、写这篇文章的由来 最近在学习韦东山嵌入式培训视频(3期项目实战之USB摄像头监控)时,在对dhcp源代码configure时,报错:cannot check for file existence when cross compiling。虽然按照视频教程给出的办法在“./configure --host=arm-linux”之后加上“ac_cv_file__dev_ra...
UE4在多版本toolchain共存下无法编译的问题
chongjie7077的博客
08-26 1815
现在面临的问题:vs2015、vs2017、vs2019共存,同时安装有多个版本的toolchain,多个版本的win10 sdk,在生成UE4.21的sln文件后,用visual studio打开编译时,总是自动用电脑上安装的最新toolchain和win10 sdk来编译,导致因大量语法错...
制作 configure 文件极简教程
最新发布
howard_shooter的博客
03-25 309
如果要发布自己的源码,而自己的源码想通过configure,make,make install 编译安装,那么要为自己的源码建立 configure 文件,这个configure 文件不是手写的,而是autoconf生成的,这个生成过程是怎样的呢?上面的文章就举了一个极简的例子,让人有个很快的初步认识。
linuxconfigure命令详细介绍
04-14
Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后在安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但万变不离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了。Configure脚本配置工具就是基础之一,它是autoconf的工具的基本应用。
linux configure参数详解
a1350352的专栏
10-18 346
Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后在安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但万变不离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了。Configure脚本配置工具就是基础之一,它是autoconf的工具的基本应用。    与一些技巧相比,Configure显得基础一些,当然使用和学习起来就显得枯燥乏味一些,当然要成为高手,对
Linux系统下Configure命令
辙忆
11-18 673
转自 百度百科 'configure'脚本有大量的命令行选项.对不同的软件包来说,这些选项可能会有变化,但是许多基本的选项是不会改变的.带上'-- help'选项执行'configure'脚本可以看到可用的所有选项.尽管许多选项是很少用到的,但是当你为了特殊的需求而configure一个包时,知道他们的存在是很有益处的.下面对每一个选项进行简略的介绍:   --prefix=PEWFIX
LinuxConfigure命令详细介绍
weixin_30648587的博客
08-06 163
 Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后在安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但万变不离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了。Configure脚本配置工具就是基础之一,它是autoconf的工具的基本应用。   与一些技巧相比,Configure显得基础一些,当然使用和学习起来就显得枯燥乏味一些,当然...
linux configure
落叶翩翩的CSDN博客
06-03 786
configure是一个shell脚本,它可以自动设定源程序以符合各种不同平台上Unix系统的特性,并且根据系统叁数及环境产生合适的Makefile文件或是C的头文件(headerfile),让源程序可以很方便地在这些不同的平台上被编译连接。 configure,这一步一般用来生成 Makefile,为下一步的编译做准备,你可以通过在 configure后加上参数来对安装进行控制,比如代码:./
1. Linux系统简介
qq_27009517的博客
07-28 9642
好的开始是成功的一半。学习 Linux 的第一个问题是搞明白 Linux 是什么,了解其来龙去脉、前世今生,知道其发展趋势、应用前景,弄清楚为什么学习它,以及如何掌握它和使用它,知其然更要知其所以然。 本章致力于让读者对 Linux 有一个宏观的认识,总览其整体,后续章节再依次讲解 Linux 的每一部分的知识点。 工欲善其事,必先利其器。建议学习 Linux 的朋友不要忽视本章章。很多人看技术类图书都不喜欢或不重视第一章,甚至直接跳过去,觉得大多是介绍性的内容,陈词滥调、形式化,且没什么 技术含量。 建议
跨平台:libcurl+openssl编译(Mac、Android、Windows、MD/MT模式、XP)
weixin_44701535的博客
02-28 2191
跨平台:libcurl+openssl编译(Mac、Android、Windows、MD/MT模式、XP) 前提概要 众所周知,http/https是当下开发应用程序时,网路部分不可或缺的部分,我们可以基于socket自己来实现,因为http/https本身是基于TCP实现的应用层协议(位于网络模型的第7层)。但随着行业的发展,https加密、业内非标准http协议的推广(CDN)等这些部分,都需...
LinuxConfigure参数解释
04-26
linux下安装软件包的时候需要对其进行配置,文档对--prefix --HOST等configure参数进行了剖析,非常useful!
Linux> 通过源码制作Ubuntu OS
qq_23922117的博客
06-25 366
本文基于之前写的两篇博文,整个来龙去脉请先看先前两篇博文: 博文A:<Linux> Ubuntu kernel 源码编译 替换___毛豆的博客-CSDN博客 博文B:<Linux> 制作minimal amd64 Linux OS___毛豆的博客-CSDN博客 基本环境: virtualbox, Ubuntu 16.04 1,搭建环境 首先,我在virtualbox中安装Ubuntu 16.04 server(后称虚拟机A),磁盘设置的是32G(不低于26G),后面需要用这个系统编译源码,所以把内
configure linux 编译器,Linux中./configure详解
weixin_31908803的博客
05-01 757
Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后在安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但万变不 离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了。Configure脚本配置工具就是基础之一,它是autoconf的工具的基本应用。'configure'脚本有大量的命令行选项.对不同的软件包来说,这些选项可能会有变化,但是许多基本的选项是不...
LinuxConfigure 及其参数用法详解
pdw1999的博客
11-01 1238
例如,“configure --build=i686-pc-linux-gnu”相当于“configure i686-pc-linux-gnu”。例如,基于 Athlon 的 GNU/Linux 系统可能是“i686-pc-linux-gnu”,基于Raspberry 最新Desktop Debian12 的系统可能是“aarch64-linux-gnu”package 的可能值包括“gnu-as”(或“gas”)、“gnu-ld”、“gnu-libc”、“gdb”、“x”和“x-toolkit”。
linux 编译 configure,如何编译配置Apache中的Configure
weixin_33823399的博客
05-07 548
./Configure文件是一个经常被遗忘的Apache工具。本文介绍如何用./Configure进行编译配置,避免每次编译Apache时进行重复的操作。文章比较了常规方法与使用./Configure这两者各自的优缺点以及如何手工编辑配制文件进行编译配置。一、优缺点比较我们知道,配制Apache编译选项使用的是configure。但除此之外,我们还可以使用Configure。注意两者的差别:常用的...
Linuxconfigure配置详解
yyyljw的博客
12-10 3376
'configure'脚本有大量的命令行选项.对不同的软件包来说,这些选项可能会有变化,但是许多基本的选项是不会改变的.带上'--help'选项执行'configure'脚本可以看到可用的所有选项.尽管许多选项是很少用到的,但是当你为了特殊的需求而configure一个包时,知道他们的存在是很有益处的.下面对每一个选项进行简略的介绍: --cache-file=FILE 'configure'会在你的系统上测试存在的特性(或者bug!).为了加速随后进行的配置,测试的结果会存储在一个cache file
linux生成configure文件,linux 自动生成configure和make文件
weixin_39697660的博客
05-13 174
我以前是直接写的makefile文件,生成o文件人然后生成执行文件。但是现在针对于很多文件就会出现文件太多的问题后来知道了autotools主要是目录有lib、src、include目录中文件├── include│ └── add.h├── lib│ ├── add.cpp│ ├── Makefile.am├── Makefile.am├── src│ ├── main.cpp│...
Linux configure 参数解释
bitscro的专栏
08-08 376
Linux configure 参数解释Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后在安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但万变不离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了。Configure脚本配置工具就是基础之一,它是autoconf的工具的基本应用。    与一些技巧相比,Configure显得基础一
写文章

热门文章

  • 一文读懂编码(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE) 5221
  • QT6+VS2022开发环境安装 2762
  • VS2019 报错“常量中有换行符” 错误原因分析 2617
  • PDF文件结构之签章 2176
  • RTF文件格式解析(一)文本编码 2121

分类专栏

  • QT 8篇
  • 文档结构 7篇
  • 计算机相关 3篇
  • STL 9篇
  • OFFICE办公 4篇

最新评论

  • 一文读懂编码(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)

    藤堂志摩子: 各种来龙去脉都解释的很清楚了!一堆的生僻汉字ansi都显示为?,但有些朗读软件还只支持ansi。真是麻烦。

  • 一文读懂编码(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)

    卡丘. 钦爱: 明白了,其实各编码发展就是在对ASCLL码不断地优化和打补丁的过程

  • PDF文件结构之签章

    爱吃鱼的简大Boss: 转载请注明出处

大家在看

  • 动动手指探索世界,旅游APP如何定制开发?
  • 【C++驾轻就熟】string类以及string类的模拟实现
  • 【2024|CVPR】《融合个人和环境线索的第三人称视角中第一人称相机佩戴者的识别和分割》论文推荐! 426
  • Linux文件IO(十)-fcntl 和 ioctl
  • MATLAB中的比较操作

最新文章

  • 字体表绘制的理解
  • QT6+VS2022开发环境安装
  • mupdf渲染过程(一):颜色
2024年12篇
2023年26篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

u010787096

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家长沙惠州玻璃钢雕塑商场美陈ip方案太湖石玻璃钢雕塑价格海安玻璃钢花盆花器中站玻璃钢雕塑设计玻璃钢雕塑公司怎么找温州玻璃钢农耕人物雕塑哪里有校园玻璃钢雕塑小品欧式玻璃钢雕塑订做价格阜南5米玻璃钢牛雕塑南平玻璃钢海豚雕塑定制玻璃钢火烈鸟雕塑厂家赤峰玻璃钢雕塑订制价格宿迁玻璃钢卡通雕塑定制广东城市几何玻璃钢雕塑东至玻璃钢花盆花器南京清远玻璃钢切面动物雕塑南通玻璃钢花盆尺寸及价格河源典雅的玻璃钢雕塑特价玻璃钢雕塑广东商场主题创意商业美陈定制玻璃钢动物雕塑头像蔬菜玻璃钢雕塑修复电话武汉玻璃钢雕塑模具上海装饰商场美陈价钱兰州城市玻璃钢雕塑公司宿迁商场春节美陈阜康玻璃钢动物雕塑工艺玻璃钢雕塑定做济源卡通玻璃钢雕塑米奇香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化