c++ - M1 MacBook Pro 和 cmake 的编译错误
问题描述
我刚拿到我的新 M1 MacBook Pro,正在尝试编译我大学工作所需的代码库。以下是我采取的步骤:
- 我将终端设置为始终使用 Rosetta 打开。
- 安装自制软件
using /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- 使用安装的cmake
brew install cmake
- 运行
cmake <path to source>
(这工作正常) - 运行
make
(失败)
这是我得到的错误:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/stdlib.h:97:15: fatal error:
'stdlib.h' file not found
#include_next <stdlib.h>
我尝试卸载并重新安装 Xcode 和 CommandLineTools 无济于事。
使用 cmake gui 应用程序时,我得到一个不同的错误。我将其设置为使用 CommandLineTools/SDKs/MacOsX11.0.sdk。
make
在使用此 cmake gui 设置生成和配置构建文件后运行时,我收到此错误:
-- The C compiler identification is AppleClang 12.0.0.12000032
-- The CXX compiler identification is AppleClang 12.0.0.12000032
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - failed
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc - broken
CMake Error at /Applications/CMake.app/Contents/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake:66 (message):
The C compiler
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc"
is not able to compile a simple test program.
It fails with the following output:
Change Dir: /Users/freyamurphy/nori/build/ext_build/src/tbb_p-build/CMakeFiles/CMakeTmp
如果我运行命令/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc test.c
(简单的 hello world 程序),我会收到此错误:
test.c:1:10: fatal error: 'stdio.h' file not found
#include "stdio.h"
但是使用cc test.c
一切都很好。(这运行 usr/bin/cc)。
在我看来,Xcode 可能存在问题。有没有人遇到过类似的问题或者可以给我一些建议?将不胜感激。
解决方案
安装 xcode 后是否重新打开终端?需要设置环境变量SDKROOT
。
关闭并再次运行终端或在终端中打开一个新选项卡。
或者在当前终端运行以下命令
export SDKROOT=$(xcrun --sdk macosx --show-sdk-path)
还要确保选择了正确的 xcode 工具链
# list available xcode toolchains
xcode-select -p
# select one of listed above
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
推荐阅读
- javascript - 在javascript中单击时,表中的值没有增加
- powershell - 如何在txt文件的特定行中查找字符串的所有实例的位置?
- keras - keras.evaluate() 准确度与通过预测手动计算准确度之间的差异:多标签分类
- android - Unity 配置中的构建和运行按钮禁用
- laravel - Laravel 多键集合分组
- vue.js - 扩展 vuetify v-btn 组件,添加自定义点击事件
- python - 如何从具有透明背景的图像中制作二进制蒙版?
- docker - 使用 Kubernetes 和 Docker Destop for Windows 设置持久卷
- video - ffmpeg — 如何从视频中提取所有帧,然后从提取的帧中精确重建视频?
- python - django填库数据迁移失败