Linux下源码安装

Linux下源码安装

很多开源库都没有说明怎么安装,这里记录一下一般方法。

先看实操

wldgb 为例:

克隆下源码后,发现README中没有说怎么安装(如果README中没说怎么安装,还应该查看其官网或在线文档)。

则观察文件:

image

一般来说,autogen.sh是用来生成configure的,然后configure是用来生成makefile的。如果不确定,可以看一下这些文件中的内容,就知道大概是怎么回事了。

可以参考:Linux下常用的编译安装工具及相关概念 - 3的4次方 - 博客园 (cnblogs.com)

因此运行autogen.sh,输出一堆信息,说明进行了configure和检查:

image

然后make编译。

然后尝试命令行输入 wldbg,发现不行。说明还没有被安装。于是 sudo make install

但是命令行输入 wldbg 还是不行,查看 wldbg 文件的位置:

whereis wldbg

发现是能找到的:

wldbg: /usr/local/bin/wldbg /usr/local/lib/wldbg

检查make install的日志,发现要我们设置路径。

我一般采用创建软连接的方式,跟别人学的:

sudo ln -s /usr/local/bin/wldbg /usr/bin/wldbg

即可正常使用了。

再看理论

以上工具均属于 GNU Build System(又称 Autotools) 的核心组件或配套工具,目标是实现软件的跨平台自动化配置、编译与安装(遵循 ./configure && make && make install 标准流程)。

工具 用途 输入文件 输出文件
autoconf(1) 检测系统环境 configure.ac 生成 configure 脚本(用户执行的核心配置工具,检测系统环境:编译器、库、头文件等)
automake(1) 生成 makefile Makefile.am + configure.ac 生成符合 GNU 标准的 Makefile.inconfigure 脚本的输入模板,最终生成 Makefile
autoreconf(1) 封装 autoheader -> automake -> autoconf 的繁琐步骤 configure.ac + Makefile.am 自动按顺序调用 autoheaderautomakeautoconf 等,简化开发者流程
autoupdate(1) 辅助:配置脚本更新工具 旧版 configure.ac 升级 configure.ac 中的宏语法(适配新版 autoconf),解决版本兼容问题
autoheader(1) 辅助:配置头文件生成器 configure.ac 生成 config.h.in(模板头文件),用户编译时 configure 会生成 config.h(含系统宏定义)
autoscan(1) 辅助:初始化扫描工具 源代码文件 生成 configure.scanconfigure.ac 的初步模板)
ifnames(1) 辅助:预处理器宏提取工具 源代码文件 提取源码中用的 #ifdef/#ifndef 宏(如 HAVE_STDIO_H),辅助编写 configure.ac 的检查项
config.guess(1) 「系统架构检测脚本」(辅助 configure 无(自动检测) 自动识别当前系统的 “目标三元组”(如 x86_64-pc-linux-gnu),告诉 configure 编译环境
config.sub(1) 「架构名称验证脚本」(辅助 configure 目标三元组(如用户指定) 验证 / 规范目标架构名称(如用户输入无效架构时自动修正),确保 configure 正确识别系统
libtool(1) 跨平台共享库工具 Makefile.am + 源码 生成 ltmain.sh 等脚本,简化跨平台共享库(.so/.dll/.dylib)的编译 / 链接 / 安装

开发者侧

编写描述文件+生成编译脚本。

graph TD A(["源码文件 + 手动编写的描述文件草稿"]) H[autoconf 调用 config.guess/config.sub 生成 configure] Z(["可分发给用户的源码编译包(含 configure、Makefile.in 等)"]) A --> B[autoscan 扫描源码] subgraph 传统方案 B --> C[生成 configure.scan] C -->|2.完善配置描述| D[重命名为 configure.ac + 用 ifnames 提取宏辅助完善] D -->|3.生成配置头文件模板| E[autoheader 生成 config.h.in] E -->|4.编写编译规则| F[编写 Makefile.am(需共享库则集成 libtool)] F -->|5.生成 Makefile 模板| G[automake 生成 Makefile.in + 配套脚本] end G --> H A --> I subgraph 简化方案 I[autoreconf -i] end I --> H H --> Z

用户侧

编译安装。

graph TD A(["源码"]) -->|1.系统环境配置| B[执行 ./configure] B -->|生成| C[Makefile 和 config.h] C -->|2.编译源码| D[执行 make] D -->|编译目标文件/共享库(libtool 辅助)| E[编译完成的二进制文件] E -->|3.测试编译结果(可选但推荐)| F[执行 make check] F -->|运行测试用例,验证功能正确性| G[测试通过标记] G -->|4.安装软件| H[执行 make install] H -->|复制二进制文件/库/头文件到系统目录| Z(["完成"])
posted @ 2024-01-22 14:13  3的4次方  阅读(33)  评论(0)    收藏  举报