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

Ubuntu20.04使用scc(scheme2c)编译Scheme报PIE链接错误如何解决

问题原因

Ubuntu 20.04 版本的 GCC 工具链默认开启 PIE(位置无关可执行文件) 链接校验,要求所有参与链接的目标文件、静态库都必须使用-fPIE参数编译。官方软件源提供的 scheme2c 2012.10.14 版本附带的libs2c.a静态库是早年按非PIE规则编译的产物,不符合当前链接器的校验要求,因此抛出重定位错误。

解决方法

快速修复(推荐,无需修改系统文件)

scc支持通过-ldopt参数将选项透传给底层的链接器,编译时传入-no-pie告知链接器生成非PIE格式的可执行文件,即可绕过校验完成编译:

# 直接编译,默认生成a.out可执行文件
scc -ldopt -no-pie hello.sc

# 需要指定输出文件名时追加-o参数即可
scc -ldopt -no-pie hello.sc -o hello

编译完成后运行生成的二进制文件,就能正常得到输出:

Hello!

该方法生成的程序在桌面、服务器场景下运行没有任何兼容性问题,是最省事的方案。

重编译PIE版静态库(仅特殊合规需求使用)

如果使用场景强制要求生成PIE格式的可执行文件,可以下载scheme2c源码,在编译配置中添加-fPIE选项,重新构建出libs2c.a静态库后,替换/usr/lib/scheme2c/路径下的原有库文件即可。普通使用场景完全不需要走这个流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 22:27:20