linux软件编译流程

首先先总结下linux下一些概念
1,gcc可以说是史上最强大的c语言编译器
起作用是将软件程序的源代码(纯文本文件)和利用已存在的函数库通过其本身gcc编译成计算机可识别的二进制文件。
该过程为程序编译的普遍流程 
2,环境检测程序(通常名为configuration或config),由于每个linux distribution使用的的内核版本是不同的,而不同的linux内核版本使用的系统调用和软件所需要的相关函数库可能也是不同的,因此对于软件在不同的操作系统以及内核版本上安装就需要通过某种环境监测机制,而这种检测机制就是我们的环境检测程序了,configuration或config。
在我们通过编译安装时通常会先通过tar -xzvf解压,然后就有一个命令./configuration ,这个就是环境监测工具了
 3,makefile文件,当环境检测程序运行结束后会在当前目录下生成makefile文件,里面记录了源代码如何编译的详细信息。
检测程序基本上会检测如下数据:
系统是否存在可编译本程序的编译器cc,gcc等
系统是否已包含该软件所需要的函数库或者是其他软件
操作系统和系统内核是否适合本软件版本
内核的头定义文件是否存在 
4,make程序, 无论是在linux还是在Unix环境中,make都是一个非常重要的编译命令。不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或make install。利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和makefile工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系。而且如此多的源文件,如果每次都要键入gcc命令进行编译的话,那对程序员来说简直就是一场灾难。而make工具则可自动完成编译工作,并且可以只对程序员在上次编译后修改过的部分进行编译。因此,有效的利用make和makefile工具可以大大提高项目开发的效率。同时掌握make和makefile之后,您也不会再面对着Linux下的应用软件手足无措了。
当执行make时,make会在当前目录下寻找makefile文件,然后依照makefile文件自动判断源代码是否经过变动而自动更新执行文件。

整个编译安装流程:1,系统获取源代码。2,系统调用环境检测程序configure或者config程序找到所需的函数库,编译器和其他资料,主动创建makefile文件。3,make依据makefile文件设置源代码,函数库,编译器等来生成二进制可执行文件。(尚未被安装到制定目录)4,make install 命令,make回一句makefile文件里关于install 的选项将编译完成的可执行文件安装到默认的目录中。

时间: 2024-10-12 22:21:55

linux软件编译流程的相关文章

linux 软件编译问题汇总

1.问题: fatal error: openssl/opensslv.h: No such file or directory 解决: sudo apt-get install libssl-dev 2.问题: curses.h:No such file or directory 解决: sudo apt-get install libncurses5-dev libncursesw5-dev 原文地址:https://www.cnblogs.com/rivsidn/p/9480736.htm

【系统知识点】linux软件安装编译

Linux上面的软件几乎都是经过GPL的授权,所以每个软件几乎均提供源代码,并且你可以自行修改该程序代码,以符合你个人需求. 基础知识: 可执行文件: 在Linux系统上面一个文件能不能被执行看的是有没有可执行的那个权限,不过真正识别的可执行文件其实二进制文件,如/usr/bin/passwd,/bin/touch 注意:shell script并不是可执行文件,它只是利用shell这个程序的功能进行一些判断式,而最终执行的除了bash提供的功能外,依然调用一些已经编译好的二进制程序来执行. 通

Linux软件管理 - 编译安装

Linux软件管理 - 编译安装 文本关键字:Linux.软件管理.configure.make.make install 一.环境准备 很多软件下载之后是一个源码包,是不能够直接运行的,需要先进行编译安装,生成可执行程序.在进行编译时,需要先使用yum安装编译工具. 1. 核心组件 必须要安装的就是gcc(GNU Compiler Collection)GNU编译器套件,其中包含了C.C++.Objective-C.Fortran.Java.Ada.Go语言前端,也包含了对应语言的库,几乎可以

linux软件管理之------编译安装nginx服务器并手动编写自动化运行脚本

红帽系列的 linux软件管理分为三类:1. rpm 安装软件.2. yum 安装软件.3. 源码包编译安装.前面两种会在相关专题给出详细讲解.源码包的编译安装是非常关键的,我们知道linux的相关版本非常多,相关的编译器,解释器也有很多,很多还有最小系统,嵌入式系统等等.同一功能的软件如果只有编译好的软件包,在其它linux的平台上,可能并不能正常安装运行,在此情况下,源码包编译安装出现了.所以本文的重点是以nginx为例,给出源码包编译安装的详细过程,同时带你手工编写自动化运行脚本. 准备工

关于Linux开源项目基础组件make编译流程

?? 关于Linux开源项目基础组件make编译流程 非常多Linux开源项目都会用到编译出可运行文件的make.这个是有一套流程的. 首先,GNU构建系统:https://en.wikipedia.org/wiki/GNU_build_system 使用Autotool来编译和管理整个产品的生产流程. 就是以下这张图: 这里面须要先了解make和makefile make:https://en.wikipedia.org/wiki/Make_(software) makefile:https:

linux卸载一个源码包安装的软件的流程

完全卸载memcached的方法(CentOS) 我的大内存vps(centos系统)曾经安装过memcached,想给论坛提速,实际上不但没有明显效果,反倒耗费内存,看着碍眼,于是想卸载,于是网上各种搜索+自己实践,搞出一个傻瓜方案来: 1.结束memcached进程# killall memcached 2.删除memcached目录及文件# rm -rf /usr/local/memcached# rm -f /etc/rc.d/init.d/memcached 3.关闭memcached

linux入门基础——linux软件管理RPM

因为linux入门基础是基于CentOS讲解的,讲的是CentOS上的软件包管理.ubuntu的软件包管理有这些:ubuntu软件包管理,包管理指南,ubuntu软件包管理. linux软件管理:RPM软件包管理 源代码形式 绝大多数开源软件都是直接以源代码形式发布 源代码一般会被打包成tar.gz的归档压缩文件 程序源代码需要手动编译成二进制形式之后才能够运行使用 源代码基本编译流程: 1 ./configure   检查编译环境.相关库文件以及配置参数并生成makefile 2 make  

Linux下编译环境配置和搭建

配置安装虚拟机和Ubuntu系统: 虚拟机安装: VMware Workstation版本:vmware-workstation-full-9.0.2-1031769 安装前请大家切记BIOS的VT功能,不开的话安装Ubuntu 64bit 是不允许的.(设置安装64bit系统注意事项) 开启方式:Bios -> Security -> System Security -> enable VT 开启后就可以安装VM并自行破解. 注意:要先开启VT开安装VM,先安装VM再开启VT的话是不行

Linux内核编译及系统裁剪之一

Linux内核编译方法详解及系统裁剪之一详解 我们的内核是由两部分组成的: 1,内核核心 核心文件的路径是/boot/vmlinuz-内核版本号 如下图-> 2,内核模块(ko:kernel object,内核对象) ko文件的路径是/lib/modules/内核版本号/下的所有文件 如下图-> 我们的内核有两种设计风格: 1,单内核设计风格 Linux的内核就属于是单内核设计风格的,不过Linux的单内核设计风格采用了微内核设计风格的模块化设计思想,所以使得我们的Linux内核的核心可以被设