이유: 1. Linux 버전은 많지만 버전마다 사용하는 소프트웨어나 커널 버전이 다르며, 바이너리 패키지가 의존하는 환경이 반드시 정상적으로 실행되지 않을 수도 있으므로 대부분의 소프트웨어는 컴파일 및 설치를 위한 소스 코드를 직접 제공합니다. 2. 다양한 요구 사항을 충족하도록 쉽게 사용자 정의할 수 있습니다. 3. 운영 및 유지관리가 편리하고, 개발자 유지관리가 편리합니다. 소스코드를 바이너리로 패키징할 수 있지만, 이 소프트웨어를 패키징하려면 유지관리를 포함한 비용이 많이 드는 추가 작업이 필요하므로 소스코드인 경우 소프트웨어 제조업체가 직접 유지관리합니다. .
이 튜토리얼의 운영 환경: linux7.3 시스템, Dell G3 컴퓨터.
일반적으로 소프트웨어 설치 방법에는 yum(rpm) 및 소스 코드 컴파일이 포함됩니다. 그러면 일부 소프트웨어를 설치하려면 소스 코드 컴파일이 필요한 이유는 무엇입니까? 소프트웨어를 컴파일하고 설치하기 위해 소스 코드를 선택하는 데에는 여러 가지 이유가 있습니다:
다양한 운영 플랫폼을 충족하기 위해. 우리는 많은 Linux 버전을 가지고 있지만 각 버전은 서로 다른 소프트웨어 또는 커널 버전을 사용하며 바이너리 패키지가 의존하는 환경이 있을 수 있습니다. 제대로 작동하지 않으므로 대부분의 소프트웨어는 소스 코드를 직접 제공합니다!
다양한 요구 사항에 맞게 쉽게 사용자 정의할 수 있습니다. 필요한 소프트웨어를 여러 번 사용자 정의할 수 있습니다. 대부분의 바이너리 코드는 한 번의 클릭으로 설치할 수 있으므로 자유도가 높지 않습니다.
저희 소스코드는 바이너리로 패키징할 수 있지만, 이 소프트웨어를 패키징하려면 유지관리를 포함한 비용이 많이 드는 추가 작업이 필요하므로 소스코드인 경우 소프트웨어 제조업체에서 직접 처리해야 합니다. 유지 관리는 가능하지만 바이너리인 경우에는 일반적으로 Linux 배포자에서 제공합니다.
Linux의 거의 모든 소프트웨어는 GPL 라이센스가 있으므로 거의 모든 소프트웨어가 소스 코드를 제공합니다.
Linux에서 실행하려면 소프트웨어가 바이너리 파일이어야 합니다. 따라서 소프트웨어 소스 코드를 얻을 때 Linux에서 실행되기 전에 이를 바이너리 파일로 컴파일해야 합니다.
1. 소프트웨어 컴파일 프로세스
소스 코드를 Linux에서 실행할 수 있는 바이너리 파일로 컴파일하려면 두 단계를 거쳐야 합니다.
gcc 컴파일러를 사용하여 소스 코드를 개체 파일로 컴파일합니다.
gcc를 다시 사용하세요. 컴파일러는 개체 파일을 바이너리 파일로 연결합니다
이 과정은 간단해 보이지만 그렇지 않습니다. 소프트웨어의 소스 코드는 여러 소스 파일에 캡슐화되는 경우가 많습니다. 또한 이러한 파일은 복잡한 종속성을 가지며 컴파일은 지정된 순서에 따라 엄격하게 수행되어야 하므로 의심할 여지 없이 컴파일의 난이도가 높아집니다. 다행스럽게도 make 명령은 컴파일 프로세스를 단순화하는 데 도움이 될 수 있습니다.
전체 컴파일 프로세스는 Makefile 파일에 압축되어 있습니다(make 명령에 프로그램을 컴파일하고 링크하는 방법을 알려줌). make 명령이 실행되면 make는 현재 디렉터리에서 Makefile 파일을 찾고 그에 따라 전체 컴파일을 완료합니다. 파일의 요구 사항에 따라.
Makefile 파일은 구성 명령에 의해 생성됩니다. 구성 명령을 실행할 때 구성은 make 명령에서 사용할 현재 시스템 환경을 기반으로 이 시스템에 적합한 Makefile을 동적으로 생성합니다.
2. Linux 소스코드 설치 단계
소스코드 받기
소프트웨어의 소스코드를 /usr/local/에 다운로드하고 압축을 푼다.
INSTALL 및 README 파일 보기
압축 해제 후 INSTALL 및 README 파일을 확인하세요. 이 두 파일에는 본 소프트웨어의 설치 방법과 주의 사항이 자세히 설명되어 있습니다.
Makefile 만들기
configure 명령을 실행하여 Makefile을 생성하세요.
컴파일
make clean;make 명령을 실행하여 소스 코드를 바이너리 파일로 컴파일합니다.
PS: make clean 명령은 마지막 컴파일에서 생성된 대상 파일을 지우는 데 사용됩니다. 이 단계는 선택사항이지만 성공적인 컴파일을 위해서는 추가하는 것이 좋습니다. 소프트웨어의 잔여 개체 파일로 인한 컴파일 실패를 방지합니다.
Installation
make install 명령을 실행하여 이전 단계에서 컴파일한 바이너리 파일을 지정된 디렉터리에 설치합니다.
3. 설치 설치 데모
1)/usr/local/를 입력하고 memcached 디렉토리를 만듭니다. 소스 코드
cd /usr/local/ mkdir memcached
4) Makefile을 생성하려면 구성을 실행하세요.
wget http://memcached.org/files/memcached-1.4.29.tar.gz
이때 현재 디렉터리에 Makefile이 생성됩니다.
참고: –prefix 매개변수는 소프트웨어 설치 디렉터리를 지정합니다. make install 명령이 실행되면 이 경로에 소프트웨어가 설치됩니다. 이 매개변수를 지정하지 않고 접두사를 지정하지 않으면 실행 파일은 기본적으로 /usr/local/bin에 배치되고 라이브러리는 설치됩니다. 파일은 기본적으로 /usr/local/lib에 위치하며, 구성 파일은 기본적으로 /usr/local/etc에 위치합니다. 다른 리소스 파일은 /usr/local/share에 있습니다.5) make를 실행하고 Makefile의 지침을 읽고 소스 코드를 컴파일합니다
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视频教程》
위 내용은 Linux에서 소스 코드를 컴파일해야 하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!