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

Visual Studio远程编译链接对象时出现编译错误求助

解决FreeNAS Jail中编译C代码时的链接与编译选项错误

从你给出的错误信息来看,问题核心是编译/链接环节误用了C++专属的配置,进而引发库依赖异常,下面一步步拆解解决:

1. 错误根源分析

  • 编译警告直接点明:-fthreadsafe-statics和-frtti是C++/ObjC专属的编译选项,完全不适合纯C代码。结合testingdesktop.vcxproj的项目后缀来看,你的Visual Studio远程构建系统误把C代码当成C代码处理了。
  • 链接错误里的__cxa_thread_atexit_impl是C标准库的线程清理函数,链接时调用了libstdc++.so,但纯C代码根本不需要依赖C标准库,这进一步证明链接步骤也用了C++工具链。

2. 具体解决步骤

调整Visual Studio远程构建配置

打开你的testingdesktop.vcxproj项目,在属性面板里做以下检查:

  • 确认常规 -> 项目默认值 -> 平台工具集是针对C语言的gcc配置,而非C++。
  • 进入C/C++ -> 命令行,手动移除-fthreadsafe-statics和-frtti这两个C++专属选项。
  • 检查链接器 -> 输入,确保没有强制添加libstdc++.so这类C++库的依赖。

手动编译验证(排除IDE配置问题)

如果IDE调整后还是报错,可以先在FreeNAS Jail的SSH终端里手动编译,确认工具链本身没问题:

# 用gcc(而非g++)编译纯C代码,gcc不会默认链接C++标准库
gcc main.c -o testingdesktop

如果手动编译成功,那问题肯定出在Visual Studio的远程构建参数上,需要再仔细核对IDE的编译/链接配置。

系统库兼容性检查(可选)

如果手动编译也出现同样的链接错误,可能是gcc版本与FreeBSD 11.1的系统库存在兼容性问题:

  • 先更新pkg仓库并升级gcc:
pkg update && pkg upgrade gcc
  • 若问题依旧,尝试安装兼容的libstdc++包:
pkg install libstdc++

不过这个情况概率较低,因为你已经通过pkg install gcc安装了对应版本的依赖库,优先排查编译选项的问题即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:09:53