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 <number_of_cores>
    来并行编译,加快编译速度。例如,如果你的系统有8个核心,可以使用
    make -j 8

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

  6. 运行

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

    sudo make install  # 需要root权限

    通常需要

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

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

    修改

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

    AIBox 一站式AI创作平台
    AIBox 一站式AI创作平台

    AIBox365一站式AI创作平台,支持ChatGPT、GPT4、Claue3、Gemini、Midjourney等国内外大模型

    下载
    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
    文件中的文件列表删除文件。

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

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

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

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

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

492

2023.10.18

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

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

382

2023.10.25

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

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

447

2023.07.18

堆和栈区别
堆和栈区别

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

606

2023.08.10

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

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

855

2023.10.27

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

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

431

2023.12.28

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

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

675

2023.12.28

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

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

478

2024.09.05

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

26

2026.03.13

热门下载

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

精品课程

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

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