MacOS "configure: error: cannot run C compiled programs" 。

12 浏览
0 Comments

MacOS "configure: error: cannot run C compiled programs" 。

我对MacOS环境还比较陌生,之前有些问题是关于编译C脚本的。我遇到了以下问题:

fatal error: stdio.h: No such file or directory
 #include 
                   ^
compilation terminated.

我尝试重新安装xcode-select --install,但一直提示我:

xcode-select:错误:命令行工具已经安装,使用“软件更新”安装更新

我更新了所有内容,但依旧没有解决问题。显然是因为我没有/ usr / includes文件。我找到了一种通过使用以下方式来编译软件的方法:

/ Library / Developer / CommandLineTools / usr / bin / g ++ XXXX.cpp

然而,现在我正在尝试 ./compile make 另一款软件,但我不知道如何默认使用这个gcc解释器。当我尝试 ./configure 时,我得到了以下错误:

configure: error: cannot run C compiled programs. If you meant to

cross compile, use \'--host\'. See \'config.log\' for more details

所以我查看了 config.log

configure:3224: checking for gcc
configure:3240: found /usr/local/bin/gcc
configure:3251: result: gcc
configure:3282: checking for C compiler version
configure:3291: gcc --version >&5
gcc (GCC) 4.9.2 20141029 (prerelease)
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
configure:3302: $? = 0
configure:3291: gcc -v >&5
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-apple-darwin14.0.0/4.9.2/lto-wrapper
Target: x86_64-apple-darwin14.0.0
Configured with: ../gcc-4.9-20141029/configure --enable-languages=c++,fortran
Thread model: posix
gcc version 4.9.2 20141029 (prerelease) (GCC) 
configure:3302: $? = 0
configure:3291: gcc -V >&5
gcc: error: unrecognized command line option '-V'
gcc: fatal error: no input files
compilation terminated.
configure:3302: $? = 1
configure:3291: gcc -qversion >&5
gcc: error: unrecognized command line option '-qversion'
gcc: fatal error: no input files
compilation terminated.
configure:3302: $? = 1
configure:3322: checking whether the C compiler works
configure:3344: gcc    conftest.c  >&5
configure:3348: $? = 0
configure:3396: result: yes
configure:3399: checking for C compiler default output file name
configure:3401: result: a.out
configure:3407: checking for suffix of executables
configure:3414: gcc -o conftest    conftest.c  >&5
configure:3418: $? = 0
configure:3440: result: 
configure:3462: checking whether we are cross compiling
configure:3470: gcc -o conftest    conftest.c  >&5
conftest.c:15:19: fatal error: stdio.h: No such file or directory
 #include 
                   ^
compilation terminated.
configure:3474: $? = 1
configure:3481: ./conftest
./configure: line 3483: ./conftest: No such file or directory
configure:3485: $? = 127
configure:3492: error: in `/Users/XXXX/phyml':
configure:3494: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details

你有任何想法可以解决它吗?

非常感谢!

admin 更改状态以发布 2023年5月23日
0
0 Comments

很容易错过melpomene在这个问题的小评论中所给出的答案,所以让我在这里发布出来供所有人查看。这个错误通常意味着你缺少已从Xcode中删除的编译工具(实际上是头文件)。\n\n你可以找到它们在/Library/Developer/CommandLineTools/Packages/,因为它们的名字可能会因为未来macOS版本的不同而不同。\n\n假设你正在运行macOS Mojave(10.14),你需要运行:

open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

,这会启动一个macOS风格的包安装程序,并要求你输入管理员密码。这是一个官方的苹果包,虽然从一个随意的目录安装一些东西可能有点奇怪,但你可以信任它。当然,你也不一定要信任我。苹果将这个更改隐藏在Xcode 10发布说明中,你可以在这里找到他们的解释:https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes#3035623\n\n以防万一这个链接失效或更改,我将在这里复制一下:\n\n命令行工具包将macOS系统头文件安装在macOS SDK内。使用已安装工具进行编译的软件将在macOS SDK内搜索头文件,该SDK由Xcode或Command Line Tools提供,具体文件路径分别为:\n\n/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk或/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk(取决于使用xcode-select选择的是哪一个)\n\n命令行工具默认在SDK中搜索系统头文件。但是,有些软件在与SDK编译时可能无法正确构建,并且需要安装在基础系统中的macOS头文件(路径为/usr/include)。如果你是这样的软件的维护者,我们鼓励你更新你的项目以与SDK一起工作,或者为防止出现问题而提交bug报告。作为一种解决方法,提供了一个额外的包,将头文件安装到基础系统中。在未来的版本中,将不再提供此包。你可以在这里找到该包:\n\n/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg\n\n安装后,你需要运行 xcode-select -s或xcode select -s /Library/Developer/CommandLineTools 命令来确保使用所需的命令行工具版本。

0