Reason: 1. There are many versions of Linux, but each version uses different software or kernel versions, and the environment that the binary package depends on may not necessarily be able to run normally, so most software directly provides source code for processing. Compile and install. 2. Easy to customize to meet different needs. 3. Convenient for operation and maintenance and developer maintenance; source code can be packaged as binary, but packaging this software will require costly extra work, including maintenance, so if it is source code, the software manufacturer will maintain it directly.
#The operating environment of this tutorial: linux7.3 system, Dell G3 computer.
Generally speaking, our software installation methods include yum (rpm) and source code compilation. So why do we need source code? Compile and install some software? There are several reasons for choosing source code to compile and install software:
To meet different operating platforms, we have many Linux versions, but each version uses different software or kernel versions, and The environment our binary packages rely on may not necessarily run normally, so most software provides source code directly!
Easy to customize to meet different needs. Many times the software we need can be customized. I can install whatever I need. Most binary codes can be installed with one click. , so the degree of freedom is not high!
It is convenient for operation and maintenance and developer maintenance. Our source code can be packaged as binary, but packaging this software will require a costly extra work, including maintenance, so if If it is source code, the software manufacturer will maintain it directly, but if it is binary, it is usually provided by the Linux publisher.
Almost all software on Linux is GPL authorized, so almost all software will provide source code.
To be executed on Linux, a software must be a binary file. Therefore, when we get the software source code, we need to compile it into a binary file before it can be run on Linux.
1. Software compilation process
It takes two steps to compile the source code into a binary file that can be run by Linux:
Use the gcc compiler to compile the source code into an object file
Use the gcc compiler again to link the object file into a binary file
This process seems simple, but in fact it is not. The source code of a software is often encapsulated in multiple source files. In addition, these files have intricate dependencies, and compilation needs to be carried out in strict accordance with the specified order, which undoubtedly increases the difficulty of compilation. Fortunately, the make command can help us simplify the compilation process.
The entire compilation process is condensed in the Makefile file (telling the make command how to compile and link the program). When the make command is executed, make will go to the current directory to find the Makefile file, and based on the file It is required to complete the entire compilation process.
The Makefile file is generated by the configure command. When executing the configure command, configure will dynamically generate a Makefile suitable for this system based on the current system environment for use by the make command.
2. Linux source code installation steps
Get the source code
Download the source code of the software to /usr/ local/ and unzip it.
View the INSTALL and README files
After decompression, view the INSTALL and README files. These two files introduce the installation method and precautions of this software in detail.
Create a Makefile
Execute the configure command to generate a Makefile.
Compile
Execute the make clean;make command to compile the source code into a binary file.
PS: The make clean command is used to clear the target files generated by the last compilation. This step is optional, but in order to ensure the success of compilation, it is better to add it. Prevent compilation failure due to residual object files in the software.
Installation
Execute the make install command to install the binary file compiled in the previous step into the specified directory.
3. Installation demonstration
1) Enter /usr/local/ and create the memcached directory :
cd /usr/local/ mkdir memcached
2) Download the source code of memcached
wget http://memcached.org/files/memcached-1.4.29.tar.gz
3) Unzip the source code
tar -zxvf memcached-1.4.29.tar.gz
4) Execute configure to generate a Makefile
./configure --prefix=/usr/local/memcached/
At this time, a Makefile will be generated in the current directory.
Note: The –prefix parameter specifies the software installation directory. When the make install command is executed, the software will be installed in this path. If this parameter is not specified and prefix is not specified, the executable file will be placed in /usr/local/bin by default, and the library file will be placed in /usr/local/lib by default. , the configuration file is placed in /usr/local/etc by default. Other resource files are placed in /usr/local/share.
5) Execute make, read the instructions from the Makefile, and compile the source code
make
此时make会读取Makefile文件,将源码编译成二进制文件,并存放在当前目录下。
执行这一步之前可以先进行清理作业:
make clean && make 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视频教程》
The above is the detailed content of Why does Linux need to compile source code?. For more information, please follow other related articles on the PHP Chinese website!