MAC OS下CLION报错Undefined symbols for architecture arm64解决方法

最近在新买的macbook下跟着做一些c++小项目时发现了问题,使用的IDE是clion,代码以及问题如下:

以测试为例,一共三个文件,te.h,te.cpp和main.cpp,主要为了展示问题

这是te.h

#include <iostream>
using namespace std;

class Person{
public:
    void hello();
};

这是te.cpp

#include "../headers/te.h"

void Person::hello() {
    cout << "hello" << endl;
}

最后在main中调用

#include <iostream>
#include "headers/te.h"

int main() {
    Person p;
    p.hello();
    return 0;
}

Cmakelists文件是这样的

cmake_minimum_required(VERSION 3.26)
project(Speech_management)

set(CMAKE_CXX_STANDARD 17)

set(SOURCES main.cpp src/te.cpp)
add_executable(main ${SOURCES})

按道理没有任何问题,但在运行之后报了如下错误:

 

至此之后我在各处论坛寻找解决方法,但是都不能完美解决。其中一个解决方法是将main中include的.h文件变为.cpp文件,这样确实就不报错了,但是这样写感觉不太规范,还是让人很难受。

于是我又各种捣鼓,终于发现了问题所在,就在工具链和cmake设置上。

一开始我的编译器一直是这样设置的

 其中cmake、gcc和g++都是在homebrew上下载的,然后将地址填入。但后来我发现其实也有默认的编译器和cmake,于是我进行了各种排列组合,最终发现都使用默认的就不报错了,如下图,不过我还是把cmake的地址填进去了

 同时在cmake这一栏里是这样设置的

 此时问题完美解决,运行成功,但不知道这个编译器有什么缺点。

以下为第二次遇到问题。

---------------------------------------------------------------------------------------

在使用了一段时间后,我发现该编译器较为古老,像algorthm头文件中少了很多方法,因此我再次寻找方法,并且发现了真正问题所在。

在homebrew中查看gcclist后发现我之前输入进clion的地址是下面较短的,而将其改为上面带有apple的地址后完美解决,不再报错。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值