news 2026/2/23 12:33:15

Mac OS 15.5下使用gcc15.2的Modules模块功能出现无法链接的解决方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Mac OS 15.5下使用gcc15.2的Modules模块功能出现无法链接的解决方法

在Mac OS 15.5系统中,最近想用C++23,试了试gcc15.2,发现出现无法链接模块功能:

首先下一个最简单的Helloworld.cpp:

import std;

int main()
{
std::println("Hello,world!");
return 0;
}

使用gcc15.2编译:

g++-15 -std=c++23 -fmodules helloworld.cpp

出现链接不到模块的错误:

Undefined symbols for architecture arm64:
"initializer for module std", referenced from:
__static_initialization_and_destruction_0() in ccEgD1TM.o
ld: symbol(s) not found for architecture arm64
collect2: error: ld returned 1 exit status

参考了网上一位大神的文章介绍:https://download.csdn.net/blog/column/11938572/149222276

使用这个命令重新编译:g++ -std=c++23 -fmodules -fsearch-include-path bits/std.cc helloworld.cpp

bit/std.cc是std模块所在位置,我们需要找出gcc15.2在Mac OS中安装位置,使用这个命令可以找到:/* by yours.tools - online tools website : yours.tools/zh/post.html */ g++-15 -print-search-dirs

gcc15.2安装位置:

install: /opt/homebrew/Cellar/gcc/15.2.0/bin/../lib/gcc/current/gcc/aarch64-apple-darwin24/15/

programs: =/opt/homebrew/Cellar/gcc/15.2.0/bin/../libexec/gcc/aarch64-apple-darwin24/15/:/opt/homebrew/Cellar/gcc/15.2.0/bin/../libexec/gcc/:/opt/homebrew/Cellar/gcc/15.2.0/bin/../lib/gcc/current/gcc/aarch64-apple-darwin24/15/../../../../../../aarch64-apple-darwin24/bin/aarch64-apple-darwin24/15/:/opt/homebrew/Cellar/gcc/15.2.0/bin/../lib/gcc/current/gcc/aarch64-apple-darwin24/15/../../../../../../aarch64-apple-darwin24/bin/

libraries: =/opt/homebrew/Cellar/gcc/15.2.0/bin/../lib/gcc/current/gcc/aarch64-apple-darwin24/15/:/opt/homebrew/Cellar/gcc/15.2.0/bin/../lib/gcc/current/gcc/:/opt/homebrew/Cellar/gcc/15.2.0/bin/../lib/gcc/current/gcc/aarch64-apple-darwin24/15/../../../../../../aarch64-apple-darwin24/lib/aarch64-apple-darwin24/15/:/opt/homebrew/Cellar/gcc/15.2.0/bin/../lib/gcc/current/gcc/aarch64-apple-darwin24/15/../../../../../../aarch64-apple-darwin24/lib/:/opt/homebrew/Cellar/gcc/15.2.0/bin/../lib/gcc/current/gcc/aarch64-apple-darwin24/15/../../../aarch64-apple-darwin24/15/:/opt/homebrew/Cellar/gcc/15.2.0/bin/../lib/gcc/current/gcc/aarch64-apple-darwin24/15/../../../

可以看到std.cc模块位置是:/opt/homebrew/Cellar/gcc/15.2.0/include/c++/15/bits/std.cc

然后替换一下刚才的编译命令中std.cc的位置即可:

g++-15 -std=c++23 -fmodules -fsearch-include-path /opt/homebrew/Cellar/gcc/15.2.0/include/c++/15/bits/std.cc helloworld.cpp

./a.out
Hello,world!

大功告成,希望C++23成熟以后,不用自己手动指定模块位置吧。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/16 11:26:43

疾控中心供配电系统设计(源码+万字报告+讲解)(支持资料、图片参考_相关定制)

疾控中心供配电系统设计 摘 要 本文旨在研究和设计一种适用于疾病控制中心的供配电系统。本研究的背景是,疾控中心是公共卫生系统的重要组成部分,其供电的稳定性和可靠性直接关系到疫情防控、疾病监测和科研实验等关键任务的顺利进行。因此,设…

作者头像 李华
网站建设 2026/2/22 11:12:55

RaNER模型领域适配:医疗术语识别微调实战案例

RaNER模型领域适配:医疗术语识别微调实战案例 1. 引言:从通用实体识别到垂直领域挑战 随着自然语言处理技术的快速发展,命名实体识别(Named Entity Recognition, NER)已成为信息抽取、知识图谱构建和智能搜索等应用的…

作者头像 李华
网站建设 2026/2/22 16:54:36

混元翻译模型1.5:上下文感知翻译实现原理

混元翻译模型1.5:上下文感知翻译实现原理 1. 引言:混元翻译模型的演进与行业需求 随着全球化进程加速,跨语言交流已成为企业、开发者乃至个人用户的刚需。传统翻译模型在面对多语言混合、专业术语密集或上下文依赖强的场景时,往…

作者头像 李华
网站建设 2026/2/21 14:58:12

Qwen3-VL智能园艺助手:植物小白也能种好花

Qwen3-VL智能园艺助手:植物小白也能种好花 1. 为什么园艺新手需要AI助手 养花种草本是件惬意的事,但对于植物小白来说,常常会遇到这样的困扰:明明每天精心照料,叶子却突然发黄枯萎;明明按时浇水施肥&…

作者头像 李华
网站建设 2026/2/16 5:51:01

Qwen3-VL创意辅助:云端GPU助力创作,1块钱起玩

Qwen3-VL创意辅助:云端GPU助力创作,1块钱起玩 1. 什么是Qwen3-VL? Qwen3-VL是阿里云推出的多模态大模型,能够同时处理图像和文本信息。简单来说,它就像是一个能"看懂"图片的AI助手——你给它一张照片&…

作者头像 李华
网站建设 2026/2/23 1:21:57

RaNER模型实战:构建智能文本分析系统的完整指南

RaNER模型实战:构建智能文本分析系统的完整指南 1. 引言:AI 智能实体侦测服务的现实需求 在信息爆炸的时代,非结构化文本数据(如新闻、社交媒体、客服对话)占据了企业数据总量的80%以上。如何从这些杂乱文本中快速提…

作者头像 李华