Mojaveへのアップグレード後、MacでCプログラムをコンパイルできません


159

端末でgccコマンドを使用してCプログラムをコンパイルしましたが、突然、Mac OS(macOS 10.14 Mojave、およびXCode 10.0)にアップデートした後、次のメッセージの受信を開始しました。

test.c:8:10: fatal error: stdio.h: No such file or directory
#include <stdio.h>
         ^~~~~~~~~
compilation terminated.

私はそれを見つけることができるのですでにgccをインストールしていて/usr/local/bin、そこには本当にgccがあります。他のiMacでも同じファイルを実行してみましたが、問題なく動作しました。

実行xcode-select --installしてみましたが、すでにインストールされていたため、現在の問題は解決しませんでした。gccこの問題を解決するために他のリソースからいくつかのコマンドをコピーして貼り付け始めた後、パスが見つからないように見えるため、パスがめちゃくちゃになっていると思います。

これについていくつかの助けが欲しいのですが。


5
gccの検索パスは、echo "#include <a.h>" | gcc -v -x c -
Matt

2
多くの場合、これxocde-select --installが正しい解決策です。どのo / sにアップグレードしましたか?モハベ10.14?どのXCodeをインストールしましたか?10.0または別のバージョン?
ジョナサンレフラー2018

39
@JonathanLeffler私は方法を見つけました。XCode 10を使用している場合、Finderで/ usrに移動すると、「include」という名前のフォルダーが表示されないことに気づくでしょう。これは、ターミナルが、 'include'フォルダー。このリリースステートメントでは、developer.apple.com / documentation / xcode_release_notes /…(/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkgに移動し、そのパッケージを実行して「include」フォルダーをインストールします)。その後、あなたは行ってもいいはずです。
Maxxx 2018

1
他のすべてが失敗した場合は、マニュアルを読んでください!またはリリースノート。AppleがUnixの遺産に背を向けたいと思っているのに、私はそれほど驚いてはいません。私はがっかりしています。彼らが注意していれば、私を追い払ってくれるかもしれません。情報ありがとうございました; 後で実験します(数時間かけて目を閉じた後)。
ジョナサンレフラー2018

16
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkgコマンドラインで)パッケージをインストールしたので、/usr/includeもう一度、GCC 8.2.0がもう一度動作します。ポインタをありがとう; それを見つけることでよくやった。おそらく他の人が問題にぶつかるので、答えを書いておくことをお勧めします。
ジョナサンレフラー2018

回答:


264

TL; DR

最新の「コマンドラインツール」パッケージをダウンロードして、ターミナル(コマンドライン)から実行してください。

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

カタリナの詳細について、「カタリナ10.15へのアップグレード後にMacでCプログラムをコンパイルできない」を参照してください。


かなり広範にわたるコメントから、首尾一貫した答えを抽出しています…

前文

多くの場合、xcode-select --installこれが正しい解決策でしたが、今回は役に立たないようです。メインのXcode GUIインターフェースを実行してみましたか?それはあなたのためにいくつかの追加のソフトウェアをインストールしてクリーンアップすることがあります。Xcode 10.0をインストールした後、1週間以上前、Mojaveにアップグレードするずっと前にそれを行いました。

GCCがにインストールされている場合、 /usr/local/bin XcodeのGCCを使用していない可能性があります。通常はにインストールされ/usr/binます。

私もmacOS 10.14 MojaveとXcode 10.0にアップデートしました。しかし、システム/usr/bin/gccとシステムの両方が/usr/bin/clang私のために(Apple LLVM version 10.0.0 (clang-1000.11.45.2) Target: x86_64-apple-darwin18.0.0両方のために)機能しています。自分で作成したGCC 8.2.0でヘッダーが見つからないという問題があります。/usr/include/usr/local/bin/gcc見つからないという問題があります。これは、見つからないという問題と並行しています。

私は少し比較を行いましたが、私のMojaveマシンにはまったく何/usr/includeもありません/usr/bin/clangが、コンパイルは可能です。ヘッダー(_stdio.h、アンダースコアが先行)は私の古い/usr/include; 今はありません(そのため、GCC 8.2.0での私の問題です)。私は走ったxcode-select --installすると「xcode-select: note: install requested for command line developer tools」と表示され、次に同意したライセンスを示すGUIインストーラーを実行し、コマンドラインツールをダウンロードしてインストールしました。

次に、Xcode GUI(コマンドスペース、Xcode、return)を実行したところ、さらにソフトウェアをインストールする必要があると言われましたが、まだありません/usr/include。しかし、私は/usr/bin/clangandでコンパイルできます/usr/bin/gcc—そして-vオプションは彼らが使用していることを示唆しています

InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

実用的なソリューション

次にMaxxx 次のように述べています:

私は方法を見つけました。Xcode 10を使用している場合/usr、Finderでに移動すると、「include」という名前のフォルダーが表示されないことに気づくでしょう。これは、内部に含まれているヘッダーファイルが存在しないことをターミナルが報告する理由です。 「include」フォルダ。ではXcodeの10.0リリースノート、それはパッケージがあると言います。

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

そして、そのパッケージをインストールして、/usr/includeフォルダーをインストールする必要があります。その後、あなたは行ってもいいはずです。

他のすべてが失敗した場合は、マニュアル、またはこの場合はリリースノートをお読みください。Appleが彼らのUnixの遺産に背を向けたいと思っているのに、私はそれほど驚いてはいませんが、私は失望しています。彼らが注意していれば、私を追い払ってくれるかもしれません。情報ありがとうございました。

コマンドラインで次のコマンドを使用してパッケージをインストールしたので、/usr/include再びGCC 8.2.0が動作しました。

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

コマンドラインツールのダウンロード

以下のようVesalは貴重で指摘したコメントは、モハーベ10.14上のXcode 10.1用のコマンドラインツールパッケージをダウンロードする必要があり、あなたはから行うことができます。

ダウンロードするには、Apple IDでログインする必要があります。ダウンロードが完了したら、コマンドラインツールパッケージをインストールします。次に、「実用的なソリューション」のセクションで説明されているようにヘッダーをインストールします。

これは私にとってMojave 10.14.1で機能しました。これは以前にダウンロードしたことがあるはずですが、この質問に答えるまでには忘れていました。

Mojave 10.14.4およびXcode 10.2へのアップグレード

2019年5月17日頃、私はMojave 10.14.4に更新し、Xcode 10.2コマンドラインツールもアップグレードされました(またはXcode 10.1コマンドラインツールが10.2にアップグレードされました)。のopenコマンドは、欠落しているヘッダーを修正しました。メインXcodeを10.2にアップグレードしてから、コマンドラインツールとヘッダーパッケージを再インストールするという冒険はまだあるかもしれません。

Xcode 10.3へのアップグレード(Mojave 10.14.6の場合)

2019-07-22に、Xcode 10.3へのアップグレードが利用可能であり、iOS 12.4、tvOS 12.4、watchOS 5.3およびmacOS Mojave 10.14.6のSDKが含まれていることがApp Storeから通知されました。10.14.5マシンの1つをインストールして実行し、提案どおりに追加のコンポーネントをインストールしましたが、/usr/includeそのまま残っているようです。

その日の後半、macOS Mojave 10.14.6(システム環境設定⟶ソフトウェアアップデート)と、コマンドラインユーティリティパッケージIIRC(自動的にダウンロードおよびインストールされた)が利用可能であることを発見しました。O / Sの更新をインストールすると、一掃、もう一度、やった/usr/includeが、open答えの上部にコマンドが再びそれを復活しました。openコマンドのファイルに記載した日付は2019-07-15でした。

XCode 11.0にアップグレード(Catalina 10.15の場合)

XCode 11.0へのアップグレード(「iOS 13、tvOS 13、watchOS 6およびmacOS Catalina 10.15のSwift 5.1およびSDKを含む」)が2019-09-21にリリースされました。「利用可能なアップデート」の通知を受け、問題なくApp Storeアプリ(アップデートタブ)からmacOS Mojave 10.14.6を実行しているマシンにダウンロードしてインストールしました/usr/include。インストール直後(アプリケーション自体を実行する前)に、再コンパイルを試みたところ、次のように言われました。

Xcode / iOSライセンスに同意するには、管理者特権が必要です。「sudo xcodebuild -license」を実行してから、このコマンドを再試行してください。

これを実行すると(sudo xcodebuild -license)、コンパイラを実行できました。それ以来、アプリケーションを実行して、必要な追加コンポーネントをインストールしました。まだ問題ありません。Catalina自体にアップグレードするとどうなるかはまだわかりませんが、現時点では、macOS Mojave 10.14.6マシンはどちらも問題ありません(2019-09-24)。


4
これを書いてくれてありがとう。とても有難い。乾杯!
Maxxx 2018

6
私のためにそれを解決しました!!! これを書くために時間を割いてくれてどうもありがとう!
budekatude

8
グランプ!!! 10.14.1アップデートで物事が再び変更されました—または、少なくとも、それらは再び変更されたようです。私にとって、O / Sの更新が吹き飛ばされたようです/usr/includeようで、上記の回答にリストされているパッケージはに存在せず、コマンドラインツールは現在利用できない/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkgxcode-select --install言われています。
Jonathan Leffler、2018年

15
アップルを偽造。彼らは機能するものを残すだけでなく、移動し、ステップを追加し、チャーンを作成する必要があります。

7
検索エンジンがこの答えを見つけることを期待して、上記の指示fatal error: bits/ctype_base.h: No such file or directory: #include <bits/ctype_base.h>は私のためにMojaveでlibstdc ++を使用してGCC 7.4.0をコンパイルするときに解決しました
Adam Lindberg

30

こことオンラインで見つけたすべての答えを試した後、いくつかの欠落したヘッダーのエラーがまだ発生していました。pyRFRをコンパイルしようとすると、stdexcept見つからないというエラーが表示されました。これは、明らかに/usr/include他のヘッダーにはインストールされていません。しかし、私はそれがMojaveのどこに隠れているかを見つけ、これを~/.bash_profileファイルの最後に追加しました。

export CPATH=/Library/Developer/CommandLineTools/usr/include/c++/v1

これで、pyRFRおよびその他のC / C ++プログラムをコンパイルできるようになりました。によるとecho | gcc -E -Wp,-v -、gccはこれらのヘッダーの古い場所(なし/c++/v1)を探していましたが、新しい場所は探していなかったため、CFLAGSに追加すると修正されました。


何もうまくいきませんでしたが、これはうまくいきました。どうもありがとうございました!!
Felix

2
wickedsickbrothnx
Davis Dulin

23

あなたが

  • に更新 Mojave 10.14.6
  • あなた/usr/includeは再び削除されました
  • @ Jonathan-lefflers 回答で言及されているパッケージはもう存在せず The file /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg does not exist.
  • Xcodeはコマンドラインツールがすでにインストールされていると不平を言います xcode-select --install xcode-select: error: command line tools are already installed, use "Software Update" to install updates

次に、上記のパッケージを復元するのに役立つのは、CommandLineToolsフォルダ 全体を削除して(sudo) rm -rf /Library/Developer/CommandLineTools再インストールすることxcode-select --installでした。


優れた!あなたのステップの後、macOS_SDK_headers_for_macOS_10.14.pkg利用可能になり、コマンドopen /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkgは想定されていたものを実行しました。どうもありがとう!!
Bruno Ambrozio、

3
私にとっては、以下が機能しました: export CPATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include
rbieber

ありがとうございました!私は行き詰まりましたが、これはMojave 10.4.6およびXCode 11.3.1で本当にうまくいきました
Simeon G

Appleがシステムアップデートをリリースするたびに、この問題を異なる方法で修正する必要があります。
igonejack

12

問題は、Xcode、特にXcode 10.xがすべてをインストールしていないため、コマンドラインツールがインストールされていることを確認し、ターミナルシェルに次のように入力します。

xcode-select --install

Xcodeも起動し、必要なすべてのインストールがインストールされていることを確認します(インストールされていない場合はプロンプトが表示されます)。Xcode10は完全なMac OS SDKをインストールしないため、次の場所でインストーラーを実行します

/ライブラリ/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

このパッケージはXcode 10によってインストールされないためです。


1
これは私を救った。どうもありがとう!
Demven Weir

7

このGitHubコメントで素晴らしい解決策と説明を見つけました。トリック:

make SDKROOT=`xcrun --show-sdk-path` MACOSX_DEPLOYMENT_TARGET=

仕事をしました。


5

注:以下は、macos Catalina 10.15の切り替え/一般提供が開始される前に、状況に応じて制限されている可能性があります。新しいラップトップ。2019年10月1日を書いています。

これらの特定の状況が、私にビルドの問題を引き起こした原因だと思います。他のほとんどの場合には適用されません。

環境:

  • macos 10.14.6 Mojave、Xcode 11.0、macos Catalina 10.15のリリース直前。新しく購入したMacbook Pro。

  • の失敗pip install psycopg2。これは基本的に、ソースからコンパイルされるPythonパッケージです。

  • 私はここで与えられた答えで提案されたいくつかの調整をすでに実行しました。

私のエラー:

pip install psycopg2
Collecting psycopg2
  Using cached https://files.pythonhosted.org/packages/5c/1c/6997288da181277a0c29bc39a5f9143ff20b8c99f2a7d059cfb55163e165/psycopg2-2.8.3.tar.gz
Installing collected packages: psycopg2
  Running setup.py install for psycopg2 ... error
    ERROR: Command errored out with exit status 1:
     command: xxxx/venv/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/bk/_1cwm6dj3h1c0ptrhvr2v7dc0000gs/T/pip-install-z0qca56g/psycopg2/setup.py'"'"'; __file__='"'"'/private/var/folders/bk/_1cwm6dj3h1c0ptrhvr2v7dc0000gs/T/pip-install-z0qca56g/psycopg2/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/bk/_1cwm6dj3h1c0ptrhvr2v7dc0000gs/T/pip-record-ef126d8d/install-record.txt --single-version-externally-managed --compile --install-headers xxx/venv/include/site/python3.6/psycopg2


...
/usr/bin/clang -Wno-unused-result -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -pipe -Os -isysroot/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -DPSYCOPG_VERSION=2.8.3 (dt dec pq3 ext lo64) -DPG_VERSION_NUM=90615 -DHAVE_LO64=1 -I/Users/jluc/kds2/py2/venv/include -I/opt/local/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m -I. -I/opt/local/include/postgresql96 -I/opt/local/include/postgresql96/server -c psycopg/psycopgmodule.c -o build/temp.macosx-10.14-x86_64-3.6/psycopg/psycopgmodule.o

    clang: warning: no such sysroot directory: 
'/Applications/Xcode.app/Contents/Developer/Platforms
                              ❌👇the real error👇❌
/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk' [-Wmissing-sysroot]
    In file included from psycopg/psycopgmodule.c:27:
    In file included from ./psycopg/psycopg.h:34:
    /opt/local/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m/Python.h:25:10: fatal error: 'stdio.h' file not found
                             ❌👆 what I thought was the error 👆❌
    #include <stdio.h>
             ^~~~~~~~~
    1 error generated.

    It appears you are missing some prerequisite to build the package 

何も修正せずにこれまでに行ったこと:

  • xcode-select --install
  • インストールされているxcode
  • open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

stdio.hでも同じエラーが発生します。

多くの場所に存在します:

(venv) jluc@bemyerp$ mdfind -name stdio.h
/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/sys/stdio.h
/usr/include/_stdio.h
/usr/include/secure/_stdio.h
/usr/include/stdio.h   👈 I believe this is the one that's usually missing.
                            but I have it.
/usr/include/sys/stdio.h
/usr/include/xlocale/_stdio.h

それで、最初のディレクトリclangが不平を言っているところに行きましょう:

(venv) jluc@gotchas$ cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
(venv) jluc@SDKs$ ls -l
total 0
drwxr-xr-x  8 root  wheel  256 Aug 29 23:47 MacOSX.sdk
drwxr-xr-x  4 root  wheel  128 Aug 29 23:47 DriverKit19.0.sdk
drwxr-xr-x  6 root  wheel  192 Sep 11 04:47 ..
lrwxr-xr-x  1 root  wheel   10 Oct  1 13:28 MacOSX10.15.sdk -> MacOSX.sdk  👈
drwxr-xr-x  5 root  wheel  160 Oct  1 13:34 .

ほら、私たちはのためにシンボリックリンクしていMacOSX10.15.sdkため、どれもMacOSX10.14.sdkを。これが私の最初のclangエラーです。

clang: warning: no such sysroot directory: '/Applications/Xcode.app/.../Developer/SDKs/MacOSX10.14.sdk' [-Wmissing-sysroot]

私の推測では、Appleはxcodeの設定を急いでおり、すでにCatalinaを使用していると考えています。これは新しいMacなので、10.14の古い設定はありません。

修正:

10.15と同じ方法で10.14をシンボリックリンクしましょう:

ln -s MacOSX.sdk/ MacOSX10.14.sdk

ところで、そのsdkディレクトリに移動すると、次のことがわかります。

...
./usr/include/sys/stdio.h
./usr/include/stdio.h
....

結果:

pip install psycopg2 動作します。

注:実際のpip installコマンドはMacOSX10.14.sdkを参照しませんでしたが、これはおそらくOSのバージョンを内省するPythonインストールメカニズムによるものです。


どちらpipを使用していますか?それが大きな問題になると思います。
フランクリンユー

3

Xcode Preferences-> Locationsを確認してください。

私が選択したコマンドラインツールは、Xcodeの以前のバージョン(10.1ではなく8.2.1)用でした。


2

OPと同様の問題があった

問題

猫hello.c

#include <stdlib.h>
int main() { exit(0); }

clang hello.c

/usr/local/include/stdint.h:2:10: error: #include nested too deeply
etc...

修正を試みました

XCodeの最新バージョンをインストールしましたが、リリースノートには、以前の修正で言及されているファイル(ここではJonathanからのもの)が利用できなくなったことが示されていました。

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

詳細については、 https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes新機能セクションをご覧ください


私のために働いた解決策...

このコメントの詳細を使用して、https://github.com/SOHU-Co/kafka-node/issues/881#issuecomment-396197724

フォルダにbrew doctor未使用のインクルードがあると報告されたことがわかりました/usr/local/

そこで修正するために、ユーザーHowCrazyから提供されたコマンドを使用して、未使用のインクルードを見つけ、一時フォルダーに移動しました。

ここで繰り返します...

mkdir /tmp/includes
brew doctor 2>&1 | grep "/usr/local/include" | awk '{$1=$1;print}' | xargs -I _ mv _ /tmp/includes

スクリプトを実行した後、インクルードファイルの問題は解消されました。nb:この問題についてもここでコメントしました。


1

私はこの問題を抱えていて、何もうまくいきませんでした。私xcode-select --installも走ってインストールしました/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

バックグラウンド

新しいラップトップでApp Storeに問題が発生したため、Apple WebサイトからXcode Betaインストーラーをダウンロードして、App Store外にXcodeをインストールすることを余儀なくされました。そのため、Xcode Betaのみをインストールしました。

解決

これは(私が思うに)、パスがclang見つからないため、またはXcode BetaSDKROOTディレクトリをインストールしないため(おそらくわかりません)、ディレクトリが見つからないようにする/Applications/Xcode.app/....ためのものでした。この問題を修正するには、Xcode Betaを削除してApp Storeの問題を解決し、リリースバージョンをインストールする必要がありました。Beta

tldr;

Xcode Betaを使用している場合は、他の人のために機能しているソリューションを試す前に、すべてをクリーンアップしてリリースバージョンをインストールしてください。


1

私はほとんどすべての投稿されたソリューションを試しましたが、何もうまくいきませんでした。私はMojave OS(10.14.6)を使用しており、最終的に何が機能したか(XcodeとCLTおよびSDKヘッダーを削除して再インストールした後):

  1. https://cran.r-project.org/bin/macosx/tools/からClang v8をインストールします
  2. 〜/ .R / Makevarsファイルから次の行を変更します
CC=/usr/local/opt/llvm/bin/clang -fopenmp
CXX=/usr/local/opt/llvm/bin/clang++

CC=/usr/local/clang8/bin/clang -fopenmp
CXX=/usr/local/clang8/bin/clang++

Cコンパイラに依存するRパッケージが正常にインストールされるようになりました


0

Jonathan Lefflerが上記で指摘したように、macOS_SDK_headers.pkgファイルはXcode 10.1には存在しません。

私のために働いたのは行うことでした、brew upgradeそしてgccの更新や他の自家製が裏で行うことはパスの問題を解決しました。



0

移行後も、Golangで同じ問題(Golandでのデバッグ)が発生しました。助けになった唯一の(ばかげた)ことは、次のフォルダーの名前を変更することです:

sudo mv /usr/local/include /usr/local/old_include

どうやらそれはhomebrewがインストールして現在壊れている古いファイルに関連しています。


-1

@JL Peyretは正しいです!

macos 10.14.6 Mojave、Xcode 11.0以降の場合

その後

cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs

sudo ln -s MacOSX.sdk / MacOSX10.14.sdk


これはコメントではありませんか?
フランクリンユー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.