TL; DR
Pastikan Anda telah mengunduh paket 'Alat Baris Perintah' terbaru dan menjalankannya dari terminal (baris perintah):
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
Untuk beberapa informasi tentang Catalina, lihat Tidak dapat mengkompilasi program C pada Mac setelah meningkatkan ke Catalina 10.15 .
Mengekstraksi jawaban semi-koheren dari komentar yang agak luas ...
Pembukaan
Sangat sering, xcode-select --install
telah menjadi solusi yang tepat, tetapi tampaknya tidak membantu saat ini. Sudahkah Anda mencoba menjalankan antarmuka GUI Xcode utama? Mungkin menginstal beberapa perangkat lunak tambahan untuk Anda dan membersihkan. Saya melakukan itu setelah menginstal Xcode 10.0, tetapi seminggu atau lebih yang lalu, jauh sebelum memutakhirkan ke Mojave.
Saya amati bahwa jika GCC Anda diinstal /usr/local/bin
, Anda mungkin tidak menggunakan GCC dari Xcode; yang biasanya dipasang di/usr/bin
.
Saya juga telah memperbarui ke macOS 10.14 Mojave dan Xcode 10.0. Namun, baik sistem /usr/bin/gcc
dan sistem /usr/bin/clang
berfungsi untuk saya ( Apple LLVM version 10.0.0 (clang-1000.11.45.2) Target: x86_64-apple-darwin18.0.0
untuk keduanya.) Saya punya masalah dengan GCC 8.2.0 buatan rumah saya tidak menemukan header /usr/include
, yang sejajar dengan masalah Anda dengan/usr/local/bin/gcc
tidak menemukan header juga.
Saya telah melakukan sedikit perbandingan, dan mesin Mojave saya tidak memiliki /usr/include
sama sekali, namun /usr/bin/clang
mampu mengkompilasi OK. Tajuk ( _stdio.h
, dengan garis bawah utama) ada di yang lama /usr/include
; itu hilang sekarang (maka masalah saya dengan GCC 8.2.0). Saya berlari xcode-select --install
dan berkata "xcode-select: note: install requested for command line developer tools
" dan kemudian menjalankan pemasang GUI yang menunjukkan kepada saya lisensi yang saya setujui, dan itu mengunduh dan menginstal alat-alat baris perintah - atau seperti yang diklaimnya.
Saya kemudian menjalankan Xcode GUI (ruang perintah, Xcode, kembali) dan dikatakan perlu menginstal beberapa perangkat lunak lagi, tetapi masih belum ada /usr/include
. Tapi saya bisa mengkompilasi dengan /usr/bin/clang
dan /usr/bin/gcc
- dan -v
opsi menyarankan mereka gunakan
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Solusi kerja
Lalu Maxxx mencatat :
Saya telah menemukan cara. Jika kami menggunakan Xcode 10, Anda akan melihat bahwa jika Anda menavigasi ke /usr
dalam Finder, Anda tidak akan melihat folder yang disebut 'sertakan' lagi, itulah sebabnya terminal mengeluh tidak adanya file header yang terdapat di dalam folder 'sertakan'. Dalam Catatan Rilis Xcode 10.0 , dikatakan ada paket:
/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
dan Anda harus menginstal paket itu agar /usr/include
foldernya diinstal. Maka Anda harus baik untuk pergi.
Ketika semuanya gagal, baca manual atau, dalam hal ini, catatan rilis. Saya tidak terlalu terkejut menemukan Apple ingin membalikkan punggung mereka pada warisan Unix mereka, tetapi saya kecewa. Jika mereka berhati-hati, mereka bisa mengusir saya. Terima kasih untuk informasinya.
Setelah menginstal paket menggunakan perintah berikut di baris perintah, saya miliki /usr/include
lagi, dan GCC 8.2.0 saya berfungsi sekali lagi.
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
Mengunduh Alat Baris Perintah
Seperti yang ditunjukkan Vesal dalam komentar berharga , Anda perlu mengunduh paket Alat Baris Perintah untuk Xcode 10.1 di Mojave 10.14, dan Anda dapat melakukannya dari:
Anda harus masuk dengan ID Apple untuk bisa mengunduh. Setelah selesai mengunduh, instal paket Alat Baris Perintah. Kemudian pasang tajuk seperti yang dijelaskan di bagian 'Solusi Bekerja'.
Ini bekerja untuk saya di Mojave 10.14.1. Saya pasti sudah mengunduh ini sebelumnya, tetapi saya sudah lupa pada saat saya menjawab pertanyaan ini.
Tingkatkan ke Mojave 10.14.4 dan Xcode 10.2
Pada atau sekitar 2019-05-17, saya memperbarui ke Mojave 10.14.4, dan alat baris perintah Xcode 10.2 juga ditingkatkan (atau alat baris perintah Xcode 10.1 ditingkatkan menjadi 10.2). Ituopen
perintah yang ditunjukkan di atas tetap header hilang. Mungkin masih ada petualangan yang datang dengan meningkatkan Xcode utama ke 10.2 dan kemudian menginstal ulang alat-alat baris perintah dan paket header.
Tingkatkan ke Xcode 10.3 (untuk Mojave 10.14.6)
Pada 2019-07-22, saya mendapat pemberitahuan melalui App Store bahwa upgrade ke Xcode 10.3 tersedia dan itu termasuk SDK untuk iOS 12.4, tvOS 12.4, watchOS 5.3 dan macOS Mojave 10.14.6. Saya menginstalnya salah satu dari 10.14.5 mesin saya, dan menjalankannya, dan menginstal komponen tambahan seperti yang disarankan, dan tampaknya telah meninggalkan/usr/include
utuh.
Kemudian pada hari yang sama, saya menemukan bahwa macOS Mojave 10.14.6 juga tersedia (System Preferences Update Update Software), bersama dengan paket Command Line Utilities IIRC (itu diunduh dan diinstal secara otomatis). Menginstal pembaruan o / s, sekali lagi, menghapus /usr/include
, tetapi open
perintah di bagian atas jawaban mengembalikannya lagi. Tanggal yang saya miliki di file untukopen
perintah adalah 2019-07-15.
Tingkatkan ke XCode 11.0 (untuk Catalina 10.15)
Upgrade ke XCode 11.0 ("termasuk Swift 5.1 dan SDKs untuk iOS 13, tvOS 13, watchOS 6 dan macOS Catalina 10.15") dirilis 2019-09-21. Saya diberitahu tentang 'pembaruan yang tersedia', dan mengunduh serta menginstalnya ke mesin yang menjalankan macOS Mojave 10.14.6 melalui aplikasi App Store (tab pembaruan) tanpa masalah, dan tanpa harus repot /usr/include
. Segera setelah instalasi (sebelum menjalankan aplikasi itu sendiri), saya mencoba sebuah kompilasi dan diberi tahu:
Menyetujui lisensi Xcode / iOS memerlukan hak admin, silakan jalankan "sudo xcodebuild -license" dan kemudian coba lagi perintah ini.
Menjalankan itu ( sudo xcodebuild -license
) memungkinkan saya untuk menjalankan kompiler. Sejak itu, saya menjalankan aplikasi untuk menginstal komponen tambahan yang dibutuhkan; masih tidak masalah. Masih harus dilihat apa yang terjadi ketika saya memutakhirkan ke Catalina sendiri - tetapi mesin macOS Mojave 10.14.6 saya baik-baik saja saat ini (2019-09-24).
echo "#include <a.h>" | gcc -v -x c -