共计 2524 个字符,预计需要花费 7 分钟才能阅读完成。
本篇内容介绍了“linux 要编译源码的原因是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
原因:1、Linux 发型版本众多,但是每个版本采用的软件或者内核版本都不一样,而二进制包所依赖的环境不一定能够正常运行,所以大部分软件直接提供源码进行编译安装。2、方便定制,满足不同的需求。3、方便运维、开发人员维护;源码是可以打包二进制的,但是对于这个软件的打包都会有一份代价不小的额外工作,包括维护,所以如果是源码的话,软件产商会直接维护。
linux 为什么要编译源码
一般来说,我们软件的安装方式有 yum(rpm),和源码编译两种方式,那么为什么我们需要源码编译安装一部分软件?选择源码编译安装软件有以下几个原因:
满足不同的运行平台,我们 Linux 发型版本众多,但是每个版本采用的软件或者内核版本都不一样,而我们的二进制包所依赖的环境不一定能够正常运行,所以大部分软件直接提供源码!
方便定制,满足不同的需求,很多时候我们所需要的软件都是可以定制的,我需要什么就安装什么,大多数二进制代码都是一键装全,所以自由度并不高!
方便运维、开发人员维护,我们的源码是可以打包二进制的,但是对于这个软件的打包都会有一份代价不小的额外工作,包括维护,所以如果是源码的话,软件产商会直接维护,但是如果是二进制的话,一般都是 Linux 发行商提供。
linux 编译源码教程
Linux 上几乎所有的软件都经过了 GPL 授权,因此几乎所有的软件都会提供源码。
而一个软件要在 Linux 上执行,必须是二进制文件,因此当我们拿到软件源码后,需要将它编译成二进制文件才能在 Linux 上运行。
1、软件编译过程
将源码编译成可供 Linux 运行的二进制文件一共需要两步:
使用 gcc 编译器将源码编译成目标文件
再次使用 gcc 编译器将目标文件链接成二进制文件
这过程看似简单,实则不然。一个软件的源代码往往被封装在多个源文件中,此外这些文件有错综复杂的依赖关系,编译需要严格按照指定的顺序进行,这无疑增加了编译的难度。好在 make
命令可以帮助我们简化编译过程。
整个编译过程被浓缩在 Makefile 文件中 (告诉make
命令需要怎么去编译和链接程序),当执行 make
命令时,make
会去当前目录中寻找 Makefile 文件,并根据该文件中的要求完成整个编译过程。
而 Makefile 文件由 configure 命令产生。当执行 configure 命令时,configure 会根据当前系统环境动态生成一个适合本系统的 Makefile 文件,供 make
命令使用。
2、Linux 源码安装步骤
获取源码
将软件的源码下载至 /usr/local/,并解压。
查看 INSTALL 与 README 文件
解压后查看 INSTALL 与 README 文件,这两个文件中详细介绍了本软件的安装方法和注意事项。
创建 Makefile 文件
执行 configure 命令,生成 Makefile 文件。
编译
执行 make
clean;make
命令将源码编译成二进制文件。
PS:make
clean 命令用来清除上一次编译生成的目标文件。这个步骤可有可无,但为了确保编译的成功,还是加上为好。防止由于软件中含有残留的目标文件导致编译失败。
安装
执行make
install 命令将上一步编译好的二进制文件安装到指定的目录中去。
3、安装演示
1)进入 /usr/local/,并创建 memcached 目录:
cd /usr/local/
mkdir memcached
2)下载 memcached 的源码
wget http://memcached.org/files/memcached-1.4.29.tar.gz
3)解压源码
tar -zxvf memcached-1.4.29.tar.gz
4)执行 configure,生成 Makefile 文件
./configure --prefix=/usr/local/memcached/
此时当前目录下将会生成一个 Makefile 文件。
注意:–prefix 参数指定软件安装目录。当执行make
install 命令时,会将软件安装在此路径中, 如果不指定该参数,不指定 prefix,可执行文件默认放在 /usr /local/bin,库文件默认放在 /usr/local/lib,配置文件默认放在 /usr/local/etc。其它的资源文件放在 /usr /local/share。
5)执行make
,从 Makefile 中读取指令,编译源码
make
此时 make
会读取 Makefile 文件,将源码编译成二进制文件,并存放在当前目录下。
执行这一步之前可以先进行清理作业:
make
cleanmake
uninstall
6)执行make
install,将软件安装至指定目录
make
install
此时二进制文件会被安装到先前 configure prefix 参数设置的路径中去。
安装完成!
4、cmake
命令(了解)
cmake
就是一个与 make
同级别的编译工具,只不过它依靠的不是 Makefile 作为编译规则,而是根据 CMakeLists.txt 来编译的。
CMake 是一个比 make
更高级的编译配置工具,它可以根据不同平台、不同的编译器,通过编写 CMakeLists.txt,可以控制生成的 Makefile,从而控制编译过程。
CMake 自动生成的 Makefile 不仅可以通过 make
命令构建项目生成目标文件,还支持安装(make
install)、测试安装的程序是否能正确执行(make
test,或者 ctest)、生成当前平台的安装包(make
package)、生成源码包(make
package_source)、产生 Dashboard 显示数据并上传等高级功能,只要在 CMakeLists.txt 中简单配置,就可以完成很多复杂的功能,包括写测试用例。
如果有嵌套目录,子目录下可以有自己的 CMakeLists.txt。
“linux 要编译源码的原因是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!