以前の質問 Mojaveへのアップグレード後にMacでCプログラムをコンパイルできない があり、その回答で、問題のほとんどのバリエーションがカバーされています。
現在、2019年10月7日月曜日以降、macOS Catalina 10.15にアップグレードできます。もう一度、アップグレード中に、XCode 11.0が(Mojave 10.14.6から)カタリナにアップグレードする前にインストールされていたとしても、/usr/include
ディレクトリがアップデートによって吹き飛ばされました。その結果、/usr/include
ディレクトリが存在することを想定してビルドされたコンパイラは動作しなくなります。
Mojaveの問題の主な推奨手順—コマンドを使用:
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
ディレクトリ/Library/Developer/CommandLineTools/Packages/
が存在しないため、ゲートから動作しません(したがって、開く[.pkg
ファイルがまだありません)。
ディレクトリ/usr/include
を作成してデータを追加するための良い(公式の)方法はありますか?
1)手動でリンクする2)brew install llvmを試しましたが、うまくいきませんでした。
最後に、これは私のために働きました: https://gitmemory.com/issue/pytorch/pytorch/31190/5651535
以下の環境変数を設定することにより:
export CC=clang
export CXX=clang++
export MACOSX_DEPLOYMENT_TARGET=10.9
私の場合、llvm
とgcc
もhomebrewを使用してインストールしたようです。それらを削除してmacOS clangに完全に依存すると、ヘッダーが見つかり、コンパイルが再び機能します。
解決策は思ったより簡単でした。 clang/llvmをインストールします。
brew install llvm
次に、自分でシンボリックリンクを作成する必要があります。
for f in /usr/local/Cellar/llvm/9.0.0_1/bin/clang*; do ln -s ${f} /usr/local/bin/"${f##*/}"; done
そして
ln -s /usr/local/Cellar/llvm/9.0.0_1/include/c++ /usr/local/include/c++
Llvmのバージョンに応じて、上記のコマンドを変更します。
これで、カスタムフラグを渡さずにC++プログラムをコンパイルできます。
clang++ hello.cpp
私にとっては、次のようにうまく機能します:
1. xcode-select --install
2. Sudo ln -s /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/* /usr/local/include/
3. export SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
この質問でKomol Nath Royの回答を実行した後、apue.hの依存関係が/usr/local/include
にまだありませんでした。
依存関係をgitから手動でダウンロードし、/usr/local/include
に配置しました