我有这个问题已经有一段时间了。我有一台带有M2芯片的Macbook,想再做一些C++编程(已经有一段时间了)。我用这个网站https://www.cs.colby.edu/maxwell/courses/tutorials/maketutor/的简单程序来制作一个简单的C程序和它的makefile(想用C启动)。makefile不工作(第一个makefile已经不工作了)。在终端中抛出的错误是:
Undefined symbols for architecture arm64:
"_myPrintHelloMake", referenced from:
_main in hellomake.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [hellomake] Error 1
令人惊讶的是,在终端中运行makefile中的命令可以正常工作。
此外,我自己做了另一个makefile(我以前做的方式),尝试一下:
hellofunc.o: hellofunc.c hellomake.h
gcc -c hellofunc.c
hellomake.o: hellomake.c hellomake.h
gcc -c hellomake.c
hellomake: hellomake.o hellofunc.o hellomake.h
clang hellomake.o hellofunc.o -o hellomake
它得到相同的错误。
我的问题是我做错了什么吗我知道Mac M1在过去有过问题,但我应该安装不同的东西吗?
顺便说一句,我在这里没有经验,所以也许我没有很好地解释自己。你可以问更多的细节。
1条答案
按热度按时间1szpjjfi1#
问题来自你的
make
程序:你可能有一个较旧的版本在你的路径编译英特尔架构。当此make
工具调用clang
(或gcc
,它是已安装的clang
编译器的别名)时,编译器会尝试为intel架构生成对象和/或可执行文件,而您系统上安装的工具无法处理此问题。尝试升级
make
实用程序:使用which make
来识别使用的是哪个程序,并使用file
命令来检查它是针对什么体系结构编译的。重命名此程序并再次运行which make
,以查看是否有其他工具可用于amd 64架构。