Linux系统下Configure命令技巧归纳
Linux系统下Configure命令技巧归纳’configure’脚本有大量的命令行选项.对不同的软件包来说,这些选项可能会有变化,不过许多基本的选项是不会改动的.带上’--help’选项执行’configure’脚本能看到可用的所有选项.尽管许多选项是非常少用到的,不过当你为了特别的需求而configure一个包时,知道他们的存在是非常有益处的.下面对每一个选项进行简略的介绍:--cache-file=FILE’configure’会在你的系统上测试存在的特性(或bug!).为了加速随后进行的设置,测试的结果会存储在一个cache file里.当configure一个每个子树里都有’configure’脚本的复杂的源码树时,一个非常好的cache file的存在会有非常大帮助.--help输出帮助信息.即使是有经验的用户也偶尔需要使用使用’--help’选项,因为一个复杂的项目会包含附加的选项.例如,GCC包里的’configure’脚本就包含了允许你控制是否生成和在GCC中使用GNU汇编器的选项.--no-create’configure’中的一个主要函数会制作输出文件.此选项阻止’configure’生成这个文件.你能认为这是一种演习(dry run),尽管缓存(cache)仍然被改写了.--quiet--silent当’configure’进行他的测试时,会输出简要的信息来告诉用户正在作什么.这样作是因为’configure’可能会比较慢,没有这种输出的话用户将会被扔在一旁疑惑正在发生什么.使用这两个选项中的所有一个都会把你扔到一旁.(译注:这两句话比较有意思,原文是这样的:If there was no such output,the user would be left wondering what is happening.By using this option,you too can be left wondering!)--version打印用来产生’configure’脚本的Autoconf的版本号.--prefix=PEWFIX’--prefix’是最常用的选项.制作出的’Makefile’会查看随此选项传递的参数,当一个包在安装时能完全的重新安置他的结构独立部分.举一个例子,当安装一个包,例如说Emacs,下面的命令将会使Emacs Lisp file被安装到"/opt/gnu/share":$./configure--prefix=/opt/gnu--exec-prefix=EPREFIX和’--prefix’选项类似,不过他是用来设置结构倚赖的文件的安装位置.编译好的’emacs’二进制文件就是这样一个问件.如果没有设置这个选项的话,默认使用的选项值将被设为和’--prefix’选项值相同.--bindir=DIR指定二进制文件的安装位置.这里的二进制文件定义为能被用户直接执行的程式.--sbindir=DIR指定终极二进制文件的安装位置.这是一些通常只能由终极用户执行的程式.--libexecdir=DIR指定可执行支持文件的安装位置.和二进制文件相反,这些文件从来不直接由用户执行,不过能被上面提到的二进制文件所执行.--datadir=DIR指定通用数据文件的安装位置.--sysconfdir=DIR指定在单个机器上使用的只读数据的安装位置.--sharedstatedir=DIR指定能在多个机器上共享的可写数据的安装位置.--localstatedir=DIR指定只能单机使用的可写数据的安装位置.--libdir=DIR指定库文件的安装位置.--includedir=DIR指定C头文件的安装位置.其他语言如C++的头文件也能使用此选项.--oldincludedir=DIR指定为除GCC外编译器安装的C头文件的安装位置.--infodir=DIR指定Info格式文件的安装位置.Info是被GNU工程所使用的文件格式.--mandir=DIR指定手册页的安装位置.--srcdir=DIR这个选项对安装没有作用.他会告诉’configure’源码的位置.一般来说不用指定此选项,因为’configure’脚本一般和源码文件在同一个目录下.--program-prefix=PREFIX指定将被加到所安装程式的名字上的前缀.例如,使用’--program-prefix=g’来configure一个名为’tar’的程式将会使安装的程式被命名为’gtar’.当和其他的安装选项一起使用时,这个选项只有当他被`Makefile.in’文件使用时才会工作.--program-suffix=SUFFIX指定将被加到所安装程式的名字上的后缀.--program-transform-name=PROGRAM这里的PROGRAM是个sed脚本.当一个程式被安装时,他的名字将经过`sed-e PROGRAM’来产生安装的名字.--build=BUILD指定软件包安装的系统平台.如果没有指定,默认值将是’--host’选项的值.--host=HOST指定软件运行的系统平台.如果没有指定,将会运行`config.guess’来检测.--target=GARGET指定软件面向(target to)的系统平台.这主要在程式语言工具如编译器和汇编器上下文中起作用.如果没有指定,默认将使用’--host’选项的值.--disable-FEATURE一些软件包能选择这个选项来提供为大型选项的编译时设置,例如使用Kerberos认证系统或一个实验性的编译器最优设置.如果默认是提供这些特性,能使用’--disable-FEATURE’来禁用他,这里’FEATURE’是特性的名字.例如:$./configure--disable-gui-enable-FEATURE[=ARG]相反的,一些软件包可能提供了一些默认被禁止的特性,能使用’--enable-FEATURE’来起用他.这里’FEATURE’是特性的名字.一个特性可能会接受一个可选的参数.例如:$./configure--enable-buffers=128`--enable-FEATURE=no’和上面提到的’--disable-FEATURE’是同义的.--with-PACKAGE[=ARG]在免费软件社区里,有使用已有软件包和库的优秀传统.当用’configure’来设置一个源码树时,能提供其他已安装的软件包的信息.例如,倚赖于Tcl和Tk的BLT器件工具包.要设置BLT,可能需要给’configure’提供一些关于我们把Tcl和Tk装的何处的信息:$./configure--with-tcl=/usr/local--with-tk=/usr/local’--with-PACKAGE=no’和下面将提到的’--without-PACKAGE’是同义的.--without-PACKAGE有时候你可能不想让你的软件包和系统已有的软件包交互.例如,你可能不想让你的新编译器使用GNU ld.通过使用这个选项能做到这一点:$./configure--without-gnu-ld--x-includes=DIR这个选项是’--with-PACKAGE’选项的一个特例.在Autoconf最初被研发出来时,流行使用’configure’来作为Imake的一个变通方法来制作运行于X的软件.’--x-includes’选项提供了向’configure’脚本指明包含X11头文件的目录的方法.--x-libraries=DIR类似的,’--x-libraries’选项提供了向’configure’脚本指明包含X11库的目录的方法.在源码树中运行’configure’是不必要的同时也是不好的.一个由’configure’产生的良好的’Makefile’能构筑源码属于另一棵树的软件包.在一个独立于源码的树中构筑派生的文件的好处是非常明显的:派生的文件,如目标文件,会凌乱的散布于源码树.这也使在另一个不同的系统或用不同的设置选项构筑同样的目标文件非常困难.建议使用三棵树:一棵源码树(source tree),一棵构筑树(build tree),一棵安装树(install tree).这里有一个非常接近的例子,是使用这种方法来构筑GNU malloc包:$gtar zxf mmalloc-1.0.tar.gz$mkdir build&&cd build$../mmalloc-1.0/configurecreating cache./config.cachechecking for gcc...gccchecking whether the C compiler(gcc)works...yeschecking whether the C compiler(gcc)is a cross-compiler...nochecking whether we are using GNU C...yeschecking whether gcc accepts-g...yeschecking for a BSD compatible install.../usr/bin/install-cchecking host system type...i586-pc-linux-gnuchecking build system type...i586-pc-linux-gnuchecking for ar...archecking for ranlib...ranlibchecking how to run the C preprocessor...gcc-Echecking for unistd.h...yeschecking for getpagesize...yeschecking for working mmap...yeschecking for limits.h...yeschecking for stddef.h...yesupdating cache../config.cachecreating./config.status这样这棵构筑树就被设置了,下面能继续构筑和安装这个包到默认的位置’/usr/local’: $make all&&make install。
rpmbuild configure参数
**rpmbuild configure参数**`rpmbuild` 是Linux 下的一个工具,用于构建RPM 软件包。
在使用`rpmbuild` 进行软件包构建时,经常需要对源代码进行配置,这通常是通过调用源代码目录中的`configure` 脚本完成的。
`configure` 脚本支持大量的参数,以便根据不同的系统和需求进行定制。
以下是 `configure` 脚本中常用的一些参数:1. **--prefix=PREFIX**设置安装目录的前缀。
例如,如果设置为`--prefix=/usr/local`,则执行`make install` 时,软件将被安装到 `/usr/local/bin`、`/usr/local/lib` 等目录下。
2. **--with-PACKAGE**启用某个特定的功能或库。
例如,`--with-ssl` 可能会启用 SSL 支持。
3. **--without-PACKAGE**禁用某个特定的功能或库。
与 `--with-PACKAGE` 相反。
4. **--enable-FEATURE**启用某个特定的特性。
这通常用于可选的功能或实验性功能。
5. **--disable-FEATURE**禁用某个特定的特性。
6. **--help**显示帮助信息,列出所有可用的 `configure` 选项。
7. **CFLAGS, CXXFLAGS, LDFLAGS**这些变量用于指定编译器和链接器的标志。
例如,可以设置优化级别、警告级别、包含的目录等。
8. **--host=HOST**指定目标主机的类型。
这对于交叉编译非常有用,例如,为ARM 架构编译软件但在 x86 上运行 `configure`。
9. **--build=BUILD**指定构建主机的类型。
通常不需要设置,除非你知道自己在做什么。
10. **--cache-file=FILE**使用或创建缓存文件,以存储之前运行的配置测试的结果。
Linux chkconfig命令详解
Linux chkconfig命令详解chkconfig:chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。
谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。
语法:chkconfig --list [name]chkconfig --add namechkconfig --del namechkconfig [--level levels] name <on|off|reset>chkconfig [--level levels] namechkconfig 没有参数运行时,显示用法。
如果加上服务名,那么就检查这个服务是否在当前运行级启动。
如果是,返回true,否则返回false。
如果在服务名后面指定了on,off或者reset,那么chkconfi 会改变指定服务的启动信息。
on和off分别指服务被启动和停止,reset指重置服务的启动信息,无论有问题的初始化脚本指定了什么。
on和off开关,系统默认只对运行级3,4,5有效,但是reset可以对所有运行级有效。
--level选项可以指定要查看的运行级而不一定是当前运行级。
需要说明的是,对于每个运行级,只能有一个启动脚本或者停止脚本。
当切换运行级时,init不会重新启动已经启动的服务,也不会再次去停止已经停止的服务。
chkconfig --list :显示所有运行级系统服务的运行状态信息(on或off)。
如果指定了name,那么只显示指定的服务在不同运行级的状态。
chkconfig --add name:增加一项新的服务。
chkconfig确保每个运行级有一项启动(S)或者杀死(K)入口。
如有缺少,则会从缺省的init脚本自动建立。
chkconfig --del name:删除服务,并把相关符号连接从/etc/rc[0-6].d删除。
chkconfig [--level levels] name <on|off|reset>:设置某一服务在指定的运行级是被启动,停止还是重置。
Linux命令详解(三).configure、make、makeinstall命令
Linux命令详解(三).configure、make、makeinstall命令这些都是典型的使⽤GNU的AUTOCONF和AUTOMAKE产⽣的程序的安装步骤⼀、基本信息 1、./configure 是⽤来检测你的安装平台的⽬标特征的。
⽐如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。
2、make 是⽤来编译的,它从Makefile中读取指令,然后编译。
3、make install是⽤来安装的,它也从Makefile中读取指令,安装到指定的位置。
注意:AUTOMAKE和AUTOCONF是⾮常有⽤的⽤来发布C程序的东西。
⼆、详细解释 1、configure命令 这⼀步⼀般⽤来⽣成 Makefile,为下⼀步的编译做准备,你可以通过在 configure 后加上参数来对安装进⾏控制,⽐如代码:./configure –prefix=/usr 意思是将该软件安装在 /usr 下⾯,执⾏⽂件就会安装在 /usr/bin (⽽不是默认的 /usr/local/bin),资源⽂件就会安装在/usr/share(⽽不是默认的/usr/local/share)。
同时⼀些软件的配置⽂件你可以通过指定 –sys-config= 参数进⾏设定。
有⼀些软件还可以加上–with、–enable、–without、–disable 等等参数对编译加以控制,你可以通过允许 ./configure –help 察看详细的说明帮助。
2、make 这⼀步就是编译,⼤多数的源代码包都经过这⼀步进⾏编译(当然有些perl或python编写的软件需要调⽤perl或python来进⾏编译)。
如果在 make 过程中出现 error ,你就要记下错误代码(注意不仅仅是最后⼀⾏),然后你可以向开发者提交 bugreport(⼀般在 INSTALL ⾥有提交地址),或者你的系统少了⼀些依赖库等,这些需要⾃⼰仔细研究错误代码。
linux autoconf的用法
Autoconf是一个用于生成配置脚本的自动化工具,它可以根据不同的系统和环境生成适合的配置脚本。
以下是使用Autoconf的一般步骤:
安装Autoconf:首先,确保你的Linux系统上已经安装了Autoconf。
如果没有安装,可以通过包管理器(如apt、yum等)来安装。
准备配置脚本:在开始使用Autoconf之前,你需要准备一个配置脚本。
这个脚本包含了编译软件时需要用到的各种参数和选项。
你可以根据需要编写自己的配置脚本,或者使用现有的模板。
运行Autoconf:在终端中,进入包含配置脚本的目录,并运行以下命令:
autoconf
这将生成一个名为configure的脚本文件。
4. 运行configure脚本:在终端中,运行以下命令来运行生成的configure脚本:bash
./configure
这将根据配置脚本中的选项和参数来检查你的系统环境,并生成适合的Makefile 文件。
5. 编译和安装:运行以下命令来编译和安装软件:
go
make
make install
这将根据Makefile文件中的指示来编译和安装软件。
需要注意的是,Autoconf的使用方式可能会因不同的软件包而有所差异。
有些软件包可能需要额外的步骤或参数来配置和编译。
因此,在使用Autoconf之前,建议仔细阅读相关文档或示例以了解特定软件包的具体使用方法。
Linux下configure错误详解
Linux下./configure错误详解说明:sudo apt-get install package-name 更新你指定的软件包sudo apt-get update 获取更新列表sudo apt-get dist-upgrade 开始更新./configure的问题错误:C compiler cannot create executables原因:解决:sudo apt-get gcc libc6-dev错误:checking for C compiler default output... configure: error: C compiler cannot create executables 原因:解决:sudo apt-get install libc6-dev错误:configure: error: C++ preprocessor "/lib/cpp" fails sanity check原因:gcc的组件没装全解决:apt-get install build-essential错误:Can't find X includes. Please check your installation and add the correct paths!原因:没有X的包含文件解决:安装xlibs-dev即可错误:Qt (>= Qt 3.0) (headers and libraries) not found. Please check your installation!原因:查找提供qt的lib&&headers的软件包,并安装之解决:apt-get install libqt3-headers libqt3-mt-dev错误:in the prefix, you've chosen, are no KDE headers installed. This will fail.So, check this please and use another prefix!原因:install a KDE application in a Gnome environment。
linux网络配置命令
linux网络配置命令Linux命令行下配置IP地址不像图形界面下那么方便,完全需要我们手动配置,下面就给大家介绍几种配置的方法:即时生效(重启后失效):ifconfig eth0 192.168.1.102 netmask 255.255.255.0 //添加IP地址route add default gw 192.168.1.1 //添加网关启动生效:vim /etc/sysconfig/network-scripts/ifcfg-eth1 //(某些版本中可能没有vim这个编辑器比如centos,大家可能用vi替换)IPADDR=192.168.1.102 //添加IP地址NETMASK=255.255.255.0 //掩码GATEWAY=192.168.1.1 //添加网关最后结果如下:DEVICE=eth0BOOTPROTO=staticIPADDR=192.168.1.102NETMASK=255.255.255.0GETEWAY=192.168.1.1ONBOOT=yesTYPE=Ethernet注:BOOTPROTO只有在static(静态)模式下才可以使用设置的IP信息修改dnsvim /etc/resolv.conf修改后可即时生效,启动同样有效形式加入nameserver= ***.***.***.***最多可有三个,作为上一个失败后的候选修改host name即时生效:hostname fc2启动生效:vim /etc/sysconfig/network形式如下:NETWORKING=yesHOSTNAME=1. 使用ifconfig命令配置并查看网络接口情况示例1: 配置eth0的IP,同时激活设备:ifconfig eth0 192.168.4.1 netmask 255.255.255.0 up示例2: 配置eth0别名设备eth0:1 的IP,并添加路由ifconfig eth0:1 192.168.4.2route add –host 192.168.4.2 dev eth0:1示例3:激活(禁用)设备ifconfig eth0:1 up(down)示例4:查看所有(指定)网络接口配置ifconfig (eth0)—————————2. 使用route 命令配置路由表示例1:添加到主机路由route add –host 192.168.4.2 dev eth0:1route add –host 192.168.4.1 gw 192.168.4.250示例2:添加到网络的路由route add –net IP netmask MASK eth0route add –net IP netmask MASK gw IProute add –net IP/24 eth1示例3:添加默认网关route add default gw IP示例4:删除路由route del –host 192.168.4.1 dev eth0:1示例5:查看路由信息route 或route -n(-n 表示不解析名字,列出速度会比route 快)—————————3.arp 管理命令示例1:查看arp缓存arp示例2:添加arp –s IP MAC示例3: 删除arp –d IP—————————4.ip是iproute2软件包里面的一个强大的网络配置工具,它能够替代一些传统的网络管理工具。
Linux教程之Linux内核的Makefile和kconfig解读
成一个 CONFIG_HELLO_MODULE=y的配置.
Linux教程之2、依赖型定义depends on或requires
指此菜单的出现和否依赖于另一个定义 config HELLO_MODULE bool “hello test module” depends on ARCH_PXA 这个例子表明HELLO_MODULE这个
Linux教程
各个子Makefile文件比较简单,指出了该如何编译目 标文件,例如/mm目录下的Makefile片段:
16 obj-$(CONFIG_PROC_PAGE_MONITOR) +=
pagewalk.o
17 obj-$(CONFIG_BOUNCE) += bounce.o
18 obj-$(CONFIG_SWAP) += page_io.o
Linux教程
这个过程是由kbuild系统来完成的,Linux编译 系统会两次扫描Linux的Makefile:首先编译系 统会读取Linux内核顶层的Makefile,然后根据 读到的内容第二次读取Kbuild的Makefile来编译 Linux内核。内核编译系统或者说kbuild,是一种 在编译内核时,可以对内核配置选项进行选择 的机制。2.6内核树中已经更新了这种机制, 新版本的kbuild 不仅高速而且备有更完善的文 档。Kbuild机制完全依赖于源代码的层次结构。
概述
在内核编译中如何将各个目录树中的文件组织起来编译 是一个很重要的问题,并且要根据用户配置来编译特有 的内核。为了解决这个问题,内核使用两种文件, Makefie和Kconfig。分布到各目录的Kconfig构成了一个 分布式的内核配置数据库,每个Kconfig分别描述了所属 目录源文档相关的内核配置菜单,就是我们使用命令 make menuconfig(或者xconfig)后产生的配置菜单, 此菜单包含多层,每个层次都是由各个目录中的Kconfig 产生的。用户根据需求来选择如何编译内核,然后将配 置结果保存到.config中,然后执行Makefile时就会根 据.config的结果来实现内核的编译。
configure的用法
configure的用法Configure是一种常见的配置命令,它可以用于配置各种软件、应用程序以及系统设置等。
在使用configure命令之前,我们需要了解该命令的基本用法以及相关参数。
本文将围绕configure命令的用法,分步骤进行阐述。
第一步:下载源代码在使用configure命令之前,我们需要先下载源代码。
对于开源软件而言,一般都可以从官网或者源代码仓库进行下载。
在下载完源代码之后,我们需要将其解压缩到指定的目录中,这样才能进行后续的操作。
第二步:执行configure命令在解压缩源代码之后,我们需要进入到源代码的目录中,并执行configure命令。
该命令的基本用法如下所示:./configure [options]其中,options表示一些可选参数,这些参数可以影响configure命令的执行结果。
下面是一些常见的options及其含义:--prefix:指定安装路径,即安装后文件所在的目录。
--enable-xxx:启用某项功能,例如--enable-shared表示启用共享库。
--disable-xxx:禁用某项功能,例如--disable-debug表示禁用调试模式。
--with-xxx=:指定其他软件或库的安装路径,例如--with-zlib=/usr/local/zlib表示指定zlib库的安装路径。
--without-xxx:不使用某个软件或库,例如--without-sqlite 表示不使用sqlite数据库。
--help:显示帮助信息,例如./configure --help表示显示configure命令的帮助信息。
第三步:编译源代码在执行configure命令之后,我们需要进行编译。
通常情况下,我们可以使用make命令进行编译。
make命令会自动根据Makefile文件进行编译,生成可执行文件。
第四步:安装程序在编译完成之后,我们需要将生成的程序进行安装。
通常情况下,我们可以使用make install命令进行安装。
Linux下chkconfig命令详解
chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。
谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。
使用语法:chkconfig [--add][--del][--list][系统服务] 或chkconfig [--level <等级代号>][系统服务][on/off/reset]chkconfig在没有参数运行时,显示用法。
如果加上服务名,那么就检查这个服务是否在当前运行级启动。
如果是,返回true,否则返回false。
如果在服务名后面指定了on,off或者reset,那么chkconfi 会改变指定服务的启动信息。
on和off分别指服务被启动和停止,reset指重置服务的启动信息,无论有问题的初始化脚本指定了什么。
on和off开关,系统默认只对运行级3,4,5有效,但是reset可以对所有运行级有效。
参数用法:--add 增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。
--del 删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。
--level<等级代号> 指定读系统服务要在哪一个执行等级中开启或关毕。
等级0表示:表示关机等级1表示:单用户模式等级2表示:无网络连接的多用户命令行模式等级3表示:有网络连接的多用户命令行模式等级4表示:不可用等级5表示:带图形界面的多用户模式等级6表示:重新启动需要说明的是,level选项可以指定要查看的运行级而不一定是当前运行级。
对于每个运行级,只能有一个启动脚本或者停止脚本。
当切换运行级时,init不会重新启动已经启动的服务,也不会再次去停止已经停止的服务。
chkconfig --list [name]:显示所有运行级系统服务的运行状态信息(on或off)。
如果指定了name,那么只显示指定的服务在不同运行级的状态。
能提高效率的Linux命令行技巧
能提高效率的Linux命令行技巧令,可以为它设置一个别名,在删除文件之前需要进行确认才能删除。
有些系统管理员会默认使用这个别名,对于这种情况,你可能需要看看下一个技巧。
$ rm -i <== 请求确认关闭别名你可以使用unalias 命令以交互方式禁用别名。
它不会更改别名的配置,而仅仅是暂时禁用,直到下次登录或重新设置了这一个别名才会重新生效。
$ unalias rm如果已经将rm -i 默认设置为rm 的别名,但你希望在删除文件之前不必进行确认,则可以将unalias 命令放在一个启动文件(例如~/.bashrc)中。
使用sudo如果你经常在只有root 用户才能执行的命令前忘记使用sudo,这里有两个方法可以解决。
一是利用命令历史记录,可以使用sudo !!(使用!! 来运行最近的命令,并在前面添加sudo)来重复执行,二是设置一些附加了所需sudo 的命令别名。
$ alias update=’sudo apt update’更复杂的技巧有时命令行技巧并不仅仅是一个别名。
毕竟,别名能帮你做的只有替换命令以及增加一些命令参数,节省了输入的时间。
但如果需要比别名更复杂功能,可以通过编写脚本、向.bashrc 或其他启动文件添加函数来实现。
例如,下面这个函数会在创建一个目录后进入到这个目录下。
在设置完毕后,执行source .bashrc,就可以使用md temp 这样的命令来创建目录立即进入这个目录下。
md () { mkdir -p "$@" }总结使用Linux 命令行是在Linux 系统上工作最有效也最有趣的方法,但配合命令行技巧和巧妙的别名可以让你获得更好的体验。
