web-dev-qa-db-ja.com

MacOS「構成:エラー:Cコンパイル済みプログラムを実行できません」

私はMacOS環境にかなり慣れていないので、以前はCスクリプトのコンパイルに問題がありました。次の問題がありました。

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

xcode-select --installを再インストールしようとしましたが、通知を続けました

xcode-select:エラー:コマンドラインツールは既にインストールされています。「ソフトウェアアップデート」を使用してアップデートをインストールしてください

何も更新しませんでした。どうやら/usr/includesファイルがないためです。を使用してソフトウェアをコンパイルする方法を見つけました

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

ただし、現在、別のソフトウェアを./compileおよびmakeしようとしていますが、デフォルトでこのgccインタープリターを使用する方法がわかりません。 ./configureを試行すると、このエラーが発生しました

configure:エラー:Cコンパイル済みプログラムを実行できません。クロスコンパイルする場合は、「-Host」を使用します。詳細については、「config.log」を参照してください

したがって、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 <stdio.h>
                   ^
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

私がそれを修正する方法についてのアイデアはありますか?

どうもありがとう !

8
Eddie

この質問への小さなコメントでメルポメンからの答えを見逃すのは本当に簡単ですので、みんなに見てもらうためにここに投稿させてください。このエラーは通常、Xcodeから削除されたコンパイラツール(実際にはヘッダー)がないことを意味します。

名前は将来のmacOSのバージョンによって異なる可能性があるため、/Library/Developer/CommandLineTools/Packages/で見つけることができます。

MacOS Mojave(10.14)を実行していると仮定すると、次を実行する必要があります:

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

また、macOSスタイルのパッケージインストーラーが起動し、管理者のパスワードが要求されます。これは公式のAppleパッケージであり、ランダムなディレクトリから何かをインストールするのは奇妙かもしれませんが、それは信頼できます。あなたはそれでも私の言葉を受け取る必要はありません。 Appleはこの変更をXcode 10リリースノートに埋めました。その説明はこちらにあります: https://developer.Apple.com/documentation/xcode_release_notes/xcode_10_release_notes#303562

このリンクが消えたり変更されたりした場合に備えて、ここでこれを再現します。

コマンドラインツールパッケージは、macOS SDK内にmacOSシステムヘッダーをインストールします。インストールされたツールでコンパイルするソフトウェアは、次のXcodeによって提供されるmacOS SDK内のヘッダーを検索します。

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk

または次のコマンドラインツール:

/ライブラリ/Developer/CommandLineTools/SDKs/MacOSX.sdk

xcode-selectを使用して選択されたものに応じて。

コマンドラインツールは、デフォルトでSDKでシステムヘッダーを検索します。ただし、一部のソフトウェアはSDKに対して正しくビルドできず、macOSヘッダーを/ usr/includeの下のベースシステムにインストールする必要があります。そのようなソフトウェアのメンテナーである場合は、SDKで動作するようにプロジェクトを更新するか、それを妨げている問題のバグレポートを提出することをお勧めします。回避策として、ヘッダーを基本システムにインストールする追加のパッケージが提供されます。将来のリリースでは、このパッケージは提供されなくなります。このパッケージは次の場所にあります。

/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg>目的のバージョンのコマンドラインツールを使用していることを確認するには、xcode-select -sまたはxcode select -s/Library/Developer/CommandLineToolsを実行しますインストール。

10
Olivier Lacan