1、程序的组成部分html
Linux下程序大都是由如下几部分组成:python
二进制文件:也就是能够运行的程序文件linux
库文件:就是一般咱们见到的lib目录下的文件nginx
配置文件:这个没必要多说,都知道c++
帮助文档:一般是咱们在Linux下用man命令查看的命令的文档sql
2、Linux下程序的存放目录shell
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目录下
3、编译安装源程序
一、使用以下命令查看当前是否安装了gcc编译器,没有能够先用yum安装gcc
gcc --version #查看是否安装gcc
二、解压源码包,例如:
tar -xvf nginx-1.7.7.tar.gz #解压源码包
三、进入解压好的源码包:
cd nginx-1.7.7 #进入源码包
四、执行configure文件,此文件有两个功能:一、让用户选定编译特性;二、检查编译环境。configure执行后将生成MakeFile文件。例如:
./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf
其中咱们经过--prefix制定了安装路径,经过--conf-path制定了配置文件的具体位置。注意:不是全部的程序的configure参数都是同样的 可使用 ./configure --help查看详细参数说明。若是该程序所依赖的库在当前系统中没有安装,则会致使configure最后报错,遇到这种状况就须要你先安装依赖库。
五、执行make命令,编译程序
make
六、编译成功后就能够安装了,执行以下命令
make install
到此程序就算安装完成了,可是不要忘了还有后续的配置哦
4、配置程序
一、修改PATH环境变量,以可以识别此程序的二进制文件路径;
修改/etc/profile文件,在文件中 添加
export PATH=$PATH:/path/to/somewhere#记得是可执行文件所在的目录,路径中不要包含可执行文件。
而后执行 :
source /etc/profile #是咱们的修改生效
二、默认状况下,系统搜索库文件的路径/lib, /usr/lib; 要增添额外搜寻路径(注意:有的程序不提供库文件,那就不须要此设置了)
在/etc/ld.so.conf.d/中建立以.conf为后缀名的文件,然后把要增添的路径直接写至此文件中;而后执行以下命令使其生效
ldconfig
三、若是程序提供了库文件,也会相应的提供头文件,通常在安装目录的include目录下,系统默认扫描头文件的路径是:/usr/include。咱们能够在/usr/include下用连接链接到咱们安装程序的头文件。
ln -s /usr/local/nginx/include /usr/include/yourname
四、可能程序还提供了帮助文档,通常是安装目录下的man目录,为了咱们可使用man命令查看咱们程序的帮助文档,咱们须要:在/etc/man.config中添加一条MANPATH,指向咱们的文档目录
一、configure ,这一步通常用来生成 Makefile,为下一步的编译作准备,你能够经过在 configure 后加上参数来对安装进行控制,好比
make 的做用是开始进行源代码编译,以及一些功能的提供,
这些功能由他的 Makefile 设置文件提供相关的功能,好比 make install 通常表示进行安装,
make uninstal 是卸载,不加参数就是默认的进行源代码编译。
make 是 Linux 开发套件里面自动化编译的一个控制程序,
他经过借助 Makefile 里面编写的编译规范(语法不少,相似一个能够运行的脚本程序。
反正我是看不懂,因此你也别问我怎么编写)。进行自动化的调用 gcc 、ld 以及运行某些须要的程序进行编译的程序。
通常状况下,他所使用的 Makefile 控制代码,由 configure 这个设置脚本根据给定的参数和系统环境生成。
这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤。
./configure是用来检测你的安装平台的目标特征的。好比它会检测你是否是有CC或GCC,并非须要CC或GCC,它是个shell脚本
make是用来编译的,它从Makefile中读取指令,而后编译。
make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。
AUTOMAKE和AUTOCONF是很是有用的用来发布C程序的东西。若是你也写程序想使用AUTOMAKE和AUTOCONF,能够参考CNGNU.ORG上的相关文章。
Q2:
cc是gcc的链接.gcc是编译器.你安装的时候大概是没有选择开发工具.你本身到光盘上找一下gcc* 吧.装上就好了.
或者yum -y groupinstall "Development Tools" 自动安装基本开发工具
CC是makefile里用来定义编译器的,是为了方便代码移植而设定,由于不一样的平台可能用到不一样的编译器
for exampe:
x86 gcc
mips64 gcc-mips64
当咱们把x86下的code移植到mips64时,只要将makefile里CC=gcc改为CC=gcc-mips64
而不须要将全部出现gcc的地方都改为gcc-mips64
Linux CC与Linux GCC的区别归纳介绍。从名字上看,老的unix系统的CC程序叫作C Compiler。但GCC这个名字按GNU的说法叫作Gnu Compiler Collection。由于gcc包含不少编译器(C, C++, Objective-C, Ada, Fortran,and Java)。因此它们是不同的,一个是一个古老的C编译器,一个是编译器的Gnu的编译器的集合(Gcc里的C编译器比CC强大太多了,因此你不必用CC)。当你调用gcc时不必定是调用的C/C++编译器,是gcc根据文件扩展名自动识别并调用对应的编译器,具体可查阅$man gcc。
你是下载不到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足够强大,健壮。支持估计目前为止只有它支持的ISO c/c++ 新特性。固然你最好不要使用night版本的gcc。
Q3:
make 和 make install 中的mark是系统自带的命令仍是可执行程序文件?。 make install中,是否是能够认为 install是mark的参数???
install 不是make的参数,而是在makefile(Makefile)中有如:install:的语句。若是用make install,那么就执行install:后面的语句。
Q4:
./config是linux自带的吗?我一make ,老提示我找不到核心类库
你去把linux的内核模块安装好就好了啊。。在linux的第二张盘里
软件的安装方法不是一成不变的,具体的步骤看随tarball提供的INSTALL或者README
Q5:
Makefile是什么东东?有什么用?怎么用?
makefile是用于自动编译和连接的,一个工程有不少文件组成,每个文件的改变都会致使工程的从新连接-----可是不是全部的文件都须要从新编译,makefile可以纪录文件的信息,决定在连接的时候须要从新编译哪些文件!
在unix系统下,makefile是与make命令配合使用的。
有了这个Makefile文件,不论咱们何时修改了源程序当中的什么文件,咱们只要执行make命令,咱们的编译器都只会去编译和咱们修改的文件有关的文件,其它的文件它连理都不想去理的。
http://www.voidcn.com/article/p-bmehdonx-bbz.html