一、程序的组成部份
Linux下程序大都是由以下几部份组成:
二补码文件:也就是可以运行的程序文件
库文件:就是一般我们看到的lib目录下的文件
配置文件:这个毋须多说,都晓得
帮助文档:一般是我们在Linux下用man命令查看的命令的文档
二、Linux下程序的储存目录
Linux程序的储存目录大致有三个地方:
/etc,/bin,/sbin,/lib:系统启动就须要用到的程序,这种目录不能挂载额外的分区,必须在根文件系统的分区上
/usr/bin,/usr/sbin,/usr/lib:操作系统核心功能,可以单独分区
/usr/local/bin,/usr/local/sbin,/usr/local/lib,/usr/local/etc,/usr/local/man:这个用于安装第三方程序,分别对应了二补码文件、库文件、配置文件、帮助文档的目录
一般来说我们安装程序就安装在/usr/local目录下
三、编译安装源程序
1、使用如下命令查看当前是否安装了gcc编译器,没有可以先用yum安装gcc
gcc–version#查看是否安装gcc
2、解压源码包,诸如:
tar-xvfnginx-1.7.7.tar.gz#解压源码包
3、进入解压好的源码包:
cdnginx-1.7.7#步入源码包
4、执行configure文件,此文件有两个功能:1、让用户选取编译特点;2、检查编译环境。configure执行后将生成MakeFile文件。诸如:
./configure–prefix=/usr/local/nginx–conf-path=/etc/nginx/nginx.conf
其中我们通过–prefix制订了安装路径,通过–conf-path制订了配置文件的具体位置。注意:不是所有的程序的configure参数都是一样的可以使用./configure–help查看详尽参数说明。假如该程序所依赖的库在当前系统中没有安装,则会造成configure最后报错,遇见这些情况就须要你先安装依赖库。
5、执行make命令,编译程序
make
6、编译成功后就可以安装了,执行如下命令
makeinstall
到此程序即使安装完成了,而且不要忘了还有后续的配置哦
四、配置程序
1、修改PATH环境变量,以才能辨识此程序的二补码文件路径;
更改/etc/profile文件,在文件中添加
exportPATH=$PATH:/path/to/somewhere#记得是可执行文件所在的目录,路径中不要包含可执行文件。
之后执行:
source/etc/profile#是我们的更改生效
2、默认情况下,系统搜索库文件的路径/lib,/usr/lib;要平添额外搜救路径(注意:有的程序不提供库文件,那就不须要此设置了)
在/etc/ld.so.conf.d/中创建以.conf为后缀名的文件,而后把要平添的路径直接写至此文件中;之后执行如下命令使其生效
ldconfig
3、如果程序提供了库文件,也会相应的提供头文件,通常在安装目录的include目录下,系统默认扫描头文件的路径是:/usr/include。我们可以在/usr/include下用链接联接到我们安装程序的头文件。
ln-s/usr/local/nginx/include/usr/include/yourname
4、可能程序还提供了帮助文档,通常是安装目录下的man目录,为了我们可以使用man命令查看我们程序的帮助文档,我们须要:在/etc/man.config中添加一条MANPATH,指向我们的文档目录
configure/make/makeinstall的作用
这种都是典型的使用GNU的AUTOCONF和AUTOMAKE形成的程序的安装步骤。
./configure是拿来测量你的安装平台的目标特点的。例如它会检查你是不是有CC或GCC,
并不是须要CC或GCC,它是个shell脚本。
make是拿来编译的linux系统源码,它从Makefile中读取指令,之后编译。
makeinstall是拿来安装的,它也从Makefile中读取指令,安装到指定的位置。
AUTOMAKE和AUTOCONF是十分有用的拿来发布C程序的东西。假如你也写程序想使用AUTOMAKE和AUTOCONF,可以参考CNGNU.ORG上的相关文章。
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里有递交地址),
或则你的系统少了一些依赖库等,这种须要自己仔细研究错误代码。
make的作用是开始进行源代码编译linux命令tar,以及一些功能的提供,
这种功能由他的Makefile设置文件提供相关的功能,例如makeinstall通常表示进行安装,
makeuninstal是卸载linux删除文件夹,不加参数就是默认的进行源代码编译。
make是Linux开发套件上面手动化编译的一个控制程序,
他通过利用Makefile上面编撰的编译规范(句型好多,类似一个可以运行的脚本程序。
总之我是看不懂,所以你也别问我如何编撰)。进行手动化的调用gcc、ld以及运行个别须要的程序进行编译的程序。
通常情况下,他所使用的Makefile控制代码,由configure这个设置脚本按照给定的参数和系统环境生成。
3、make insatll ,这条命令来进行安装(当然有些软件需要先运行 make check 或 make test
来进行一些测试),这一步通常须要你有root权限(由于要向系统写入文件)
Q1:安装补码程序时,都要执行三步:
1./configure
2make
3makeinstall
她们是哪些意思呀?
configure要用到gcc或cc。
但make时,须要哪些?
这种都是典型的使用GNU的AUTOCONF和AUTOMAKE形成的程序的安装步骤。
./configure是拿来测量你的安装平台的目标特点的。例如它会检查你是不是有CC或GCC,并不是须要CC或GCC,它是个shell脚本
make是拿来编译的,它从Makefile中读取指令,之后编译。
makeinstall是拿来安装的,它也从Makefile中读取指令,安装到指定的位置。
AUTOMAKE和AUTOCONF是十分有用的拿来发布C程序的东西。假如你也写程序想使用AUTOMAKE和AUTOCONF,可以参考CNGNU.ORG上的相关文章。
Q2:
cc和gcc又是哪些?我在rh7.3用./configure时,它老说我没有cc,难以进行安装,如何能够有cc
cc是gcc的联接.gcc是编译器.你安装的时侯大约是没有选择开发工具.你自己到光碟上找一下gcc*吧.装上就行了.
或则yum-ygroupinstall“DevelopmentTools”自动安装基本开发工具
CC是makefile里拿来定义编译器的,是为了便捷代码移植而设定,由于不同的平台可能用到不同的编译器
forexampe:
x86gcc
mips64gcc-mips64
当我们把x86下的code移植到mips64时,只要将makefile里CC=gcc改成CC=gcc-mips64
而不须要将所有出现gcc的地方都改成gcc-mips64
LinuxCC与LinuxGCC的区别概括介绍。从名子上看,老的unix系统的CC程序称作CCompiler。但GCC这个名子按GNU的说法称作GnuCompilerCollection。由于gcc包含好多编译器(C,C++,Objective-C,Ada,Fortran,andJava)。所以它们是不一样的,一个是一个古老的C编译器,一个是编译器的Gnu的编译器的集合(Gcc里的C编译器比CC强悍太多了,所以你没必要用CC)。当你调用gcc时不一定是调用的C/C++编译器,是gcc按照文件扩充名手动辨识并调用对应的编译器,具体可查阅$mangcc。
你是下载不到CC的,缘由是:CC来自于高昂的Unix系统,CC是商业软件,要想用你须要打电话,写订单,而不是打开你的Browser去download。
linux下的cc是gcc的符号链接。可以通过$ls–l/usr/bin/cc来简单察看.而编译时听到的控制台输出CC则是一个指向gcc的变量,该变量是make程序的内建变量,即使你在Makefile中没有CC=,该变量也会存在,并默认指向gcc。cc的符号链接和变量存在的意义在于源码的移植性,可以便捷的用GCC来编译老的用cc编译的unix软件,甚至连Makefile都不要改。并且也易于linux程序在unix下编译。
近几年的一个新情况是越来越多的unix用户,据我所知像solaris,bsd用户也不太使用CC了,人们都一定要装一个gcc,用它来编译C/C++程序。缘由显而易见,gcc足够强悍,强壮。支持恐怕目前为止只有它支持的ISOc/c++新特点。其实你最好不要使用night版本的gcc。
Q3:
make和makeinstall中的mark是系统自带的命令还是可执行程序文件?。makeinstall中linux系统源码,是不是可以觉得install是mark的参数???
install不是make的参数,而是在makefile(Makefile)中有如:install:的句子。假如用makeinstall,这么就执行install:前面的句子。
Q4:
./config是linux自带的吗?我一make,老提示我找不到核心泛型
你去把linux的内核模块安装好就行了啊。。在linux的第二张盘里
软件的安装方式不是一成不变的,具体的步骤看随tarball提供的INSTALL或则README
Q5:
Makefile是哪些东东?有哪些用?如何用?
makefile是用于手动编译和链接的,一个工程有好多文件组成,每一个文件的改变就会造成工程的重新链接—–但是不是所有的文件都须要重新编译,makefile才能纪录文件的信息,决定在链接的时侯须要重新编译什么文件!
在unix系统下,makefile是与make命令配合使用的。
有了这个Makefile文件,不论我们哪些时侯更改了源程序当中的哪些文件,我们只要执行make命令,我们的编译器都只会去编译和我们更改的文件有关的文件,其它的文件它连理都不想去理的。
文章出处: