0

0

如何编译安装源码包 configure/make编译流程详解

P粉602998670

P粉602998670

发布时间:2025-08-29 11:47:01

|

362人浏览过

|

来源于php中文网

原创

编译安装源码包的步骤为:1. 从官网等可靠来源下载.tar.gz或.tar.bz2格式的源码包;2. 使用tar命令解压源码包,如tar -zxvf package.tar.gz或tar -jxvf package.tar.bz2;3. 进入解压后的源码目录,使用cd命令切换路径;4. 运行./configure脚本检查系统环境并生成makefile文件,可通过--prefix指定安装路径,若缺少依赖则需根据提示安装对应开发库;5. 执行make命令根据makefile编译源码,可使用make -j n利用多核加速编译;6. 执行sudo make install将编译好的文件安装到指定目录,此步通常需要root权限;7. 若安装路径非标准目录,需修改~/.bashrc或~/.zshrc文件,添加path和ld_library_path环境变量,并执行source命令使其生效。

如何编译安装源码包 configure/make编译流程详解

简单来说,编译安装源码包就是把一堆人类能看懂的代码,变成机器能执行的程序。Configure负责配置编译环境,Make根据配置好的环境进行编译,最后Make install将编译好的程序安装到指定位置。这就是一个化腐朽为神奇的过程。

解决方案

编译安装源码包通常遵循以下步骤:

  1. 获取源码包: 从官方网站或者其他可靠来源下载源码包,通常是

    .tar.gz
    .tar.bz2
    格式的压缩文件。

  2. 解压源码包: 使用

    tar
    命令解压源码包。例如:

    tar -zxvf package.tar.gz  # 解压.tar.gz文件
    tar -jxvf package.tar.bz2  # 解压.tar.bz2文件
  3. 进入源码目录: 使用

    cd
    命令进入解压后的源码目录。

  4. 运行

    configure
    脚本: 这是编译安装的关键步骤。
    configure
    脚本会检查你的系统环境,比如是否安装了必要的依赖库,然后生成
    Makefile
    文件。

    ./configure --prefix=/usr/local/package  # 指定安装目录,默认是/usr/local

    --prefix
    选项指定了程序的安装目录,如果不指定,默认安装到
    /usr/local
    目录下。还可以根据需要添加其他选项,例如
    --enable-feature
    --disable-feature
    来启用或禁用某些功能。

    如果缺少依赖,

    configure
    会报错,你需要根据错误提示安装相应的依赖库。在Debian/Ubuntu系统上,可以使用
    apt-get install
    命令安装,在CentOS/RHEL系统上,可以使用
    yum install
    命令安装。

  5. 运行

    make
    命令:
    make
    命令会根据
    Makefile
    文件中的指令,将源码编译成可执行文件。

    make

    如果你的系统是多核处理器,可以使用

    make -j 
    来并行编译,加快编译速度。例如,如果你的系统有8个核心,可以使用
    make -j 8

    编译过程中可能会出现错误,你需要根据错误提示修改源码或者安装缺失的依赖库。

  6. 运行

    make install
    命令:
    make install
    命令会将编译好的可执行文件、库文件、配置文件等安装到指定目录。

    sudo make install  # 需要root权限

    通常需要

    root
    权限才能执行
    make install
    命令,因为系统目录通常需要
    root
    权限才能写入。

  7. 配置环境变量: 如果程序安装到了非标准目录,你需要将程序的安装目录添加到环境变量中,才能在命令行中直接运行程序。

    修改

    ~/.bashrc
    ~/.zshrc
    文件,添加以下内容:

    B2S商城系统
    B2S商城系统

    B2S商城系统B2S商城系统是由佳弗网络工作室凭借专业的技术、丰富的电子商务经验在第一时刻为最流行的分享式购物(或体验式购物)推出的开源程序。开发采用PHP+MYSQL数据库,独立编译模板、代码简洁、自由修改、安全高效、数据缓存等技术的应用,使其能在大浏览量的环境下快速稳定运行,切实节约网站成本,提升形象。注意:如果安装后页面打开出现找不到数据库等错误,请删除admin下的runtime文件夹和a

    下载
    export PATH=$PATH:/usr/local/package/bin
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/package/lib

    然后执行

    source ~/.bashrc
    source ~/.zshrc
    命令,使环境变量生效。

为什么
configure
脚本很重要?它做了哪些事情?

configure
脚本就像一个项目经理,负责统筹整个编译过程。它主要做了以下几件事情:

  • 检查系统环境: 检查编译器、库文件等依赖是否安装,版本是否符合要求。
  • 生成
    Makefile
    根据系统环境和用户指定的选项,生成
    Makefile
    文件。
    Makefile
    文件包含了编译的指令,
    make
    命令会根据
    Makefile
    文件中的指令进行编译。
  • 创建目录: 创建必要的目录,例如安装目录、临时目录等。
  • 执行其他配置任务: 根据具体的项目,执行其他配置任务,例如生成配置文件、设置编译选项等。

configure
脚本的目的是为了让编译过程更加自动化和可移植。它可以根据不同的系统环境生成不同的
Makefile
文件,从而保证程序可以在不同的系统上编译和运行。

遇到
configure
报错,常见的错误有哪些?如何解决?

configure
报错是编译安装过程中常见的问题。常见的错误包括:

  • 缺少依赖库: 错误提示通常会告诉你缺少哪个库,例如
    configure: error: *** libpng not found
    解决方法是安装相应的库。在Debian/Ubuntu系统上,可以使用
    apt-get install libpng-dev
    命令安装,在CentOS/RHEL系统上,可以使用
    yum install libpng-devel
    命令安装。注意,需要安装的是
    -dev
    -devel
    后缀的开发包,而不是运行时库。
  • 编译器版本不符合要求: 错误提示通常会告诉你编译器版本过低或过高。解决方法是升级或降级编译器。
  • 权限不足: 错误提示通常会告诉你没有权限创建目录或写入文件。解决方法是使用
    sudo
    命令运行
    configure
    脚本,或者修改目录的权限。
  • 其他错误: 错误提示可能是一些其他的错误,例如配置文件错误、脚本错误等。解决方法是仔细阅读错误提示,查找相关的资料,或者向社区寻求帮助。

解决

configure
报错的关键是仔细阅读错误提示,理解错误的原因,然后根据错误的原因采取相应的解决方法。

make
make install
区别是什么?

make
命令负责将源码编译成可执行文件,而
make install
命令负责将编译好的可执行文件、库文件、配置文件等安装到指定目录。

make
命令只是编译源码,不会修改系统文件。而
make install
命令会修改系统文件,例如将可执行文件复制到
/usr/local/bin
目录下,将库文件复制到
/usr/local/lib
目录下,将配置文件复制到
/usr/local/etc
目录下。因此,通常需要
root
权限才能执行
make install
命令。

可以把

make
看作是生产零件,
make install
看作是组装和安装。

如何卸载通过源码编译安装的软件?

卸载通过源码编译安装的软件,通常没有像包管理器那样方便的卸载命令。一般来说,有以下几种方法:

  1. 使用

    make uninstall
    命令: 有些源码包提供了
    make uninstall
    命令,可以直接卸载软件。在源码目录下执行
    sudo make uninstall
    命令即可。但是,并不是所有的源码包都提供了
    make uninstall
    命令,如果没有,就需要手动卸载。

  2. 手动删除文件: 手动删除安装目录下的文件。首先,你需要知道软件安装到了哪些目录。如果你在

    configure
    的时候指定了
    --prefix
    选项,那么软件就安装到了指定的目录下。如果没有指定,默认安装到
    /usr/local
    目录下。然后,你需要手动删除这些目录下的文件。例如:

    sudo rm -rf /usr/local/package

    这种方法比较麻烦,而且容易遗漏文件。

  3. 记录安装文件: 在安装之前,使用

    make install
    命令的
    -n
    选项,可以模拟安装过程,并输出安装的文件列表。然后,将这些文件列表保存下来,卸载的时候,就可以根据文件列表删除文件。例如:

    make install -n > install.log

    然后,根据

    install.log
    文件中的文件列表删除文件。

    这种方法比较可靠,但是需要提前做好准备。

卸载通过源码编译安装的软件需要小心谨慎,避免误删系统文件。建议在卸载之前备份相关文件。

相关专题

更多
scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

187

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

288

2023.10.25

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

392

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

572

2023.08.10

常见的linux系统有哪些
常见的linux系统有哪些

linux系统有Ubuntu、Fedora、CentOS、Debian、openSUSE、Arch Linux、Gentoo、Slackware、Linux Mint、Kali Linux。更多关于linux系统的文章详情请阅读本专题下面的文章。php中文网欢迎大家前来学习。

806

2023.10.27

ubunt上安装和配置vnc
ubunt上安装和配置vnc

安装方法:安装VNC服务器、启动VNC服务器、设置VNC密码等等。想了解更多ubuntu的相关内容,可以阅读本专题下面的文章。

412

2023.12.28

ubuntu启动黑屏解决方法
ubuntu启动黑屏解决方法

ubuntu启动黑屏解决方法:检查是否是电源问题、检查内存是否接触不良、检查显卡问题等。想了解更多ubuntu的相关内容,可以阅读本专题下面的文章。

657

2023.12.28

为什么ubuntu有网络连接但不能上网
为什么ubuntu有网络连接但不能上网

ubuntu有网络连接但不能上网的原因:1、dns配置问题;2、代理服务器设置问题;3、网络防火墙设置问题;4、路由器或调制解调器设置问题;5、网络驱动程序问题;6、网络配置文件问题;7、其他问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

452

2024.09.05

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

19

2026.01.20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

相关下载

更多

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.5万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

NumPy 教程
NumPy 教程

共44课时 | 2.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号