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

MinGW环境下链接自定义数学库libmcs替换默认libm的问题

MinGW下替换默认数学库链接的问题

我使用MinGW的gcc 6.3.0版本编译C程序(main.c),想要链接已编译好的外部数学库libmcs。尝试了以下两条编译命令:

gcc -o main_libm.exe main.c -lm
gcc -o main_libmcs.exe main.c -LC:\..\libmcs\bin -lmcs 

两条命令都编译成功,但可以确定main_libmcs.exe仍然链接了默认C数学库——因为两个程序的运行结果完全一致,不符合我预期的数值近似差异。

经调研得知,即使不手动指定-lm,MinGW也会自动链接默认数学库,-nostdlib选项可以禁用自动链接。但使用该选项链接外部库时:

gcc -nostdlib test_mathlib.o -LC:\..\libmcs\bin -lmcs -lc

出现错误:

undefined reference to `__main'

添加-lgcc选项后:

gcc -nostdlib test_mathlib.o -LC:\..\libmcs\bin -lmcs -lc -lgcc

又出现新的错误:

In function `__do_global_ctors': ... undefined reference to `atexit'

推测是缺少更多必要的库链接。

我有以下问题:

  • 是否存在可以仅禁用或替换默认C数学库自动链接的选项?
  • 如果没有这样的选项,使用-nostdlib时还需要添加哪些库链接?

平台详情

Target: x86_64-w64-mingw32
Thread model: win32
gcc version 6.3.0 (x86_64-win32-seh-rev2, Built by MinGW-W64 project)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 08:43:16