64位Ubuntu 17.10执行make all失败,报/usr/bin/ld: cannot find -lgcc_s错误求助
嘿,我来帮你搞定这个链接错误!你遇到的/usr/bin/ld: cannot find -lgcc_s问题,在64位Ubuntu系统上通常是因为缺少32位版本的gcc支持库,或者链接器没定位到正确的库路径。下面是几个按优先级排序的解决方案,你可以依次尝试:
安装32位gcc多架构支持库
这是最常见的解决方式,因为64位系统默认只安装64位库,如果你编译的是32位程序,就会找不到对应的32位libgcc_s。执行以下命令安装:sudo apt-get update && sudo apt-get install gcc-multilib lib32gcc1这个包会自动安装32位版本的gcc相关库,包括你需要的
libgcc_s.so。手动指定链接器的库路径
如果安装完多架构库后还是报错,可能链接器没有自动搜索到32位库路径。你可以在make命令中手动添加路径参数:make all LDFLAGS="-L/usr/lib32"或者直接修改项目的Makefile,找到
LDFLAGS变量,追加-L/usr/lib32,这样后续make时就会自动包含这个路径。创建软链接修复库文件名匹配问题
有些情况下,系统中存在libgcc_s.so.1(实际的库文件),但链接器在找的是libgcc_s.so(无版本号的链接文件)。你可以手动创建软链接:sudo ln -s /usr/lib32/libgcc_s.so.1 /usr/lib32/libgcc_s.so执行完后再重新运行
make all试试。检查并更新gcc版本
Ubuntu 17.10是比较老的版本,可能gcc存在兼容性问题。执行以下命令确保gcc是系统支持的最新版本:sudo apt-get update && sudo apt-get install --reinstall gcc重新安装gcc可以修复可能损坏的库文件或配置。
简单解释下:libgcc_s是gcc提供的支持库,负责处理异常、线程安全等底层功能,64位系统默认不预装32位版本,所以编译32位目标程序时就会触发这个错误。
内容的提问来源于stack exchange,提问作者Aniruddha Dey

