Windows下用MSYS2和MinGW仅编译Binutils的nm工具方法咨询
仅编译Binutils中的nm工具(MSYS2 + MinGW环境)
以下是精准编译nm工具的操作步骤,能大幅减少编译量:
准备编译环境
- 打开对应架构的MinGW shell(如
mingw64.exe或mingw32.exe) - 安装必要编译依赖:
(32位环境替换pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-make autoconf automake libtoolx86_64为i686)
- 打开对应架构的MinGW shell(如
配置Binutils
- 解压Binutils源码,创建独立build目录(推荐out-of-tree编译):
mkdir build && cd build - 运行configure脚本,指定目标架构与安装路径,可加
--disable-nls减少冗余依赖:
(32位目标替换../configure --target=x86_64-w64-mingw32 --prefix=/your/install/path --disable-nlsx86_64-w64-mingw32为i686-w64-mingw32)
- 解压Binutils源码,创建独立build目录(推荐out-of-tree编译):
仅编译nm工具
- 不要直接执行
make,而是运行以下命令,只编译nm及必要依赖库:make all-nm - 该命令会自动编译nm所需的公共核心库(如libbfd、libiberty),但不会编译objdump、readelf等其他工具,编译效率显著提升。
- 不要直接执行
安装nm工具
- 执行以下命令仅安装nm到指定路径:
make install-nm
- 执行以下命令仅安装nm到指定路径:
补充说明
Binutils的工具依赖部分公共核心库,这些库必须编译,但相比全量编译,仅编译nm的工作量已大幅降低。通过--disable-*参数禁用目录效果有限,因为工具代码与公共库耦合度高,而make all-nm是官方支持的精准编译方式。
内容的提问来源于stack exchange,提问作者Alex Skimo
相关产品推荐
相关产品推荐

