You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下如何编译静态链接libstdc++和libgcc的Boost动态库?

在Linux下编译Boost共享库并静态链接libstdc++和libgcc的问题

我需要在Linux环境下将Boost编译为共享库(对应命令./b2 install link=shared),但要求生成的Boost共享库静态链接libstdc++和libgcc。

默认编译后,用ldd查看libboost_filesystem.so,可以看到这两个库是动态链接的:

ldd libboost_filesystem.so
        linux-vdso.so.1 (0x00007ffebd5ef000)
        libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f2f8330d000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f2f832f2000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f2f832cf000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f2f830dd000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f2f82f8e000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f2f83521000)

我知道-static-libgcc和-static-libstdc++这两个链接标志可以实现静态链接这两个库,之前在CMake项目中通过添加-DCMAKE_SHARED_LINKER_FLAGS="-static-libgcc -static-libstdc++"配置,效果符合预期。

但在Boost的b2编译脚本中,我尝试了多种方式添加这些标志都没有效果:

第一种尝试:

./b2 install cxxflags="-static-libgcc -static-libstdc++" cflags="-static-libgcc -static-libstdc++" linkflags="-static-libgcc -static-libstdc++"

第二种尝试:

./b2 install gcc/linkflags="-static-libgcc -static-libstdc++" gcc/cxxflags="-static-libgcc -static-libstdc++" gcc/cflags="-static-libgcc -static-libstdc++"

第三种尝试:

./b2 install gcc/linkflags="-static-libgcc -static-libstdc++" gcc/cxxflags="-static-libgcc -static-libstdc++" gcc/cflags="-static-libgcc -static-libstdc++" gcc/link=static

请问我哪里操作错了?我显然对b2中这些标志的使用方式有误解,正确的做法应该是什么?


内容的提问来源于stack exchange,提问作者Kate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 23:58:28