如何在Bazel+GCC 10.2环境下使用mold链接器替代默认ld?
解决Bazel + GCC下使用mold链接器的方法
方法1:通过环境变量指定编译器参数
直接在启动Bazel时设置CC和CXX环境变量,将-B参数嵌入编译器命令:
CC="gcc -B/usr/local/libexec/mold" CXX="g++ -B/usr/local/libexec/mold" bazel build //src:XXX
这种方式会让Bazel全程使用带路径参数的GCC/G++,确保链接阶段调用mold。
方法2:使用--linker_flags参数传递选项
--linkopt无法正确传递-B这类影响链接器选择的参数,改用--linker_flags直接传递给链接驱动:
bazel build --linker_flags="-B/usr/local/libexec/mold" //src:XXX
方法3:配置.bazelrc实现长期生效
在项目根目录创建.bazelrc文件,添加以下内容:
build:mold --action_env=CC="gcc -B/usr/local/libexec/mold" build:mold --action_env=CXX="g++ -B/usr/local/libexec/mold"
后续编译只需指定配置即可:
bazel build --config=mold //src:XXX
验证链接器是否生效
编译完成后,用以下命令检查二进制文件的链接器信息:
readelf -p .comment 目标二进制文件路径
输出中出现mold版本信息即说明配置成功。
内容的提问来源于stack exchange,提问作者very hit
相关产品推荐
相关产品推荐

