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

arm64架构下使用std::string出现未定义符号错误求助

解决arm64架构下使用std::string引发的未定义符号链接错误

问题根源

你遇到的链接错误里的符号(std::__1::basic_string相关、std::terminate()、___gxx_personality_v0等)都属于C标准库(libc),出现这类错误的核心原因是用C编译器clang来链接C++目标文件,而C编译器不会自动链接C++标准库。

查看你的Makefile,链接生成最终可执行文件的步骤使用的是$(CC)(即clang):

$(BUILD_DIR)/$(TARGET_EXEC): $(OBJS)
    $(CC) $(OBJS) -o $@ $(LDFLAGS)

修复方案

将链接步骤的编译器替换为$(CXX)(即clang++),clang会自动处理C标准库的链接:

修改后的链接规则:

$(BUILD_DIR)/$(TARGET_EXEC): $(OBJS)
    $(CXX) $(OBJS) -o $@ $(LDFLAGS)

额外注意事项

  • 不需要手动添加-lstring这类选项,clang会自动链接正确的C标准库
  • 你的fragment shader代码存在一处语法错误:输出变量定义为vec4 position,但赋值时使用的是color,会导致着色器编译失败,需修正为:
layout(location = 0) out vec4 color;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 21:01:07