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

使用arblib库的C程序经GCC编译后可执行文件无法运行

GCC编译Arb库示例程序运行失败(退出码1)的解决方法

问题根源

你通过vcpkg安装的x64-windows版本Arb库是为MSVC编译器编译的,和MinGW GCC的二进制接口(ABI)不兼容。VS2022能正常运行是因为它使用MSVC工具链,而GCC链接MSVC编译的库后,会因函数调用约定、标准库实现差异等问题触发运行时崩溃——arb_printn涉及Flint的IO函数,这类和标准库交互的逻辑最容易暴露ABI冲突问题。

修复步骤

1. 安装MinGW兼容的Arb库版本

卸载原有MSVC版本的Arb库,重新安装适配MinGW的版本:

# 卸载现有x64-windows版本
vcpkg remove arblib:x64-windows --recurse

# 安装x64-mingw动态库版本(推荐适配MinGW GCC)
vcpkg install arblib:x64-mingw-dynamic --recurse
# 或者安装静态库版本
# vcpkg install arblib:x64-mingw-static --recurse

2. 调整编译链接参数

使用MinGW版本库的路径重新编译,确保头文件和库路径指向x64-mingw-dynamic(或x64-mingw-static)目录:

# 动态库版本编译命令
gcc test.c -o ./exe/test -LC:\你的vcpkg路径\installed\x64-mingw-dynamic\lib -IC:\你的vcpkg路径\installed\x64-mingw-dynamic\include -lflint -larb -lmpfr -lgmp

# 静态库版本编译命令(需加-static参数)
gcc test.c -o ./exe/test -static -LC:\你的vcpkg路径\installed\x64-mingw-static\lib -IC:\你的vcpkg路径\installed\x64-mingw-static\include -lflint -larb -lmpfr -lgmp

注意:链接库的顺序很关键,把依赖其他库的库放在前面(比如-lflint要在-larb之前,因为Arb依赖Flint)。

3. 调试定位(可选)

如果仍有问题,用GDB调试查看具体崩溃点:

gdb ./exe/test
run
bt

该命令会输出调用栈,能更精准定位是链接缺失还是ABI适配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:05:05