Linux下源码安装
Linux下源码安装
很多开源库都没有说明怎么安装,这里记录一下一般方法。
先看实操
以 wldgb 为例:
克隆下源码后,发现README中没有说怎么安装(如果README中没说怎么安装,还应该查看其官网或在线文档)。
则观察文件:

一般来说,autogen.sh是用来生成configure的,然后configure是用来生成makefile的。如果不确定,可以看一下这些文件中的内容,就知道大概是怎么回事了。
可以参考:Linux下常用的编译安装工具及相关概念 - 3的4次方 - 博客园 (cnblogs.com)
因此运行autogen.sh,输出一堆信息,说明进行了configure和检查:

然后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.in(configure 脚本的输入模板,最终生成 Makefile) |
autoreconf(1) |
封装 autoheader -> automake -> autoconf 的繁琐步骤 |
configure.ac + Makefile.am |
自动按顺序调用 autoheader、automake、autoconf 等,简化开发者流程 |
autoupdate(1) |
辅助:配置脚本更新工具 | 旧版 configure.ac |
升级 configure.ac 中的宏语法(适配新版 autoconf),解决版本兼容问题 |
autoheader(1) |
辅助:配置头文件生成器 | configure.ac |
生成 config.h.in(模板头文件),用户编译时 configure 会生成 config.h(含系统宏定义) |
autoscan(1) |
辅助:初始化扫描工具 | 源代码文件 | 生成 configure.scan(configure.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(["完成"])

浙公网安备 33010602011771号