TL; DR
ตรวจสอบให้แน่ใจว่าคุณได้ดาวน์โหลดแพ็คเกจ 'เครื่องมือบรรทัดคำสั่ง' ล่าสุดและเรียกใช้จากเทอร์มินัล (บรรทัดคำสั่ง):
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
สำหรับข้อมูลบางอย่างเกี่ยวกับ Catalina ดูไม่สามารถรวบรวมโปรแกรม C บน Mac หลังจากอัพเกรด Catalina 10.15
แยกคำตอบที่กึ่งเชื่อมโยงกันจากความคิดเห็นที่ค่อนข้างครอบคลุม ...
คำนำ
บ่อยครั้งxcode-select --install
เป็นคำตอบที่ถูกต้อง แต่ดูเหมือนจะไม่ช่วยในครั้งนี้ คุณได้ลองใช้ Xcode GUI interface หลักแล้วหรือยัง? มันอาจติดตั้งซอฟต์แวร์พิเศษบางอย่างสำหรับคุณและทำความสะอาด ฉันทำอย่างนั้นหลังจากติดตั้ง Xcode 10.0 แล้วแต่หนึ่งสัปดาห์ขึ้นไปนานก่อนที่จะอัพเกรดเป็น Mojave
ฉันสังเกตว่าหากติดตั้ง GCC ของคุณ/usr/local/bin
แล้วคุณอาจไม่ได้ใช้ GCC จาก Xcode /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
ก็สามารถคอมไพล์ OK ได้ ส่วนหัว ( _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 กลับ) และมันก็บอกว่ามันจำเป็นต้องติดตั้งซอฟต์แวร์บางมากขึ้น /usr/include
แต่ก็ยังไม่มี แต่ฉันสามารถคอมไพล์ด้วย/usr/bin/clang
และ/usr/bin/gcc
- และ-v
ตัวเลือกแนะนำพวกเขากำลังใช้
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
วิธีแก้ปัญหาการทำงาน
จากนั้นMaxxx ตั้งข้อสังเกต :
ฉันพบวิธี หากเราใช้ Xcode 10 คุณจะสังเกตเห็นว่าหากคุณนำทางไปยัง/usr
ใน Finder คุณจะไม่เห็นโฟลเดอร์ชื่อ 'รวม' อีกต่อไปซึ่งเป็นสาเหตุที่เทอร์มินัลบ่นว่าไม่มีไฟล์ส่วนหัวที่อยู่ภายใน โฟลเดอร์ 'รวม' ในบันทึกย่อประจำรุ่น 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ชี้ให้เห็นในความคิดเห็นที่มีค่าคุณจะต้องดาวน์โหลดแพ็คเกจเครื่องมือบรรทัดคำสั่งสำหรับ Xcode 10.1 บน Mojave 10.14 และคุณสามารถทำได้จาก:
คุณต้องลงชื่อเข้าใช้ด้วย Apple ID เพื่อให้สามารถดาวน์โหลดได้ เมื่อคุณดาวน์โหลดเสร็จแล้วให้ติดตั้งแพ็คเกจเครื่องมือบรรทัดคำสั่ง จากนั้นติดตั้งส่วนหัวตามที่อธิบายไว้ในส่วน 'วิธีแก้ปัญหาการทำงาน'
สิ่งนี้ใช้ได้กับฉันในโมฮาวี 10.14.1 ฉันต้องดาวน์โหลดสิ่งนี้มาก่อน แต่ฉันลืมไปแล้วเมื่อฉันตอบคำถามนี้
อัปเกรดเป็น Mojave 10.14.4 และ Xcode 10.2
ในหรือประมาณ 2019-05-17 ฉันได้รับการอัปเดตเป็นโมฮาวี 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 ฉันได้รับแจ้งผ่านทาง App Store ว่ามีการอัพเกรดเป็น Xcode 10.3 และมี SDK สำหรับ iOS 12.4, tvOS 12.4, watchOS 5.3 และ macOS Mojave 10.14.6 ฉันติดตั้งหนึ่งในเครื่อง 10.14.5 ของฉันแล้วรันและติดตั้งส่วนประกอบเพิ่มเติมตามที่แนะนำและดูเหมือนว่าจะยัง/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 ("รวม Swift 5.1 และ SDK สำหรับ iOS 13, tvOS 13, watchOS 6 และ macOS Catalina 10.15") เปิดตัว 2019-09-21 ผมได้รับแจ้งจาก 'การปรับปรุงที่มี' และดาวน์โหลดและติดตั้งลงบนเครื่องวิ่ง MacOS ซ้อม 10.14.6 ผ่านแอป App Store (แท็บการปรับปรุง) โดยไม่มีปัญหาและโดยไม่ต้อง futz /usr/include
กับ ทันทีหลังจากการติดตั้ง (ก่อนเรียกใช้แอปพลิเคชันตัวเอง) ฉันลองรวบรวมใหม่และได้รับแจ้งว่า:
การยอมรับใบอนุญาต Xcode / iOS ต้องใช้สิทธิ์ผู้ดูแลระบบโปรดเรียกใช้“ sudo xcodebuild -license” แล้วลองคำสั่งนี้อีกครั้ง
การเรียกใช้ ( sudo xcodebuild -license
) ทำให้ฉันสามารถรันคอมไพเลอร์ได้ ตั้งแต่นั้นมาฉันรันแอพพลิเคชั่นเพื่อติดตั้งส่วนประกอบเพิ่มเติมตามที่ต้องการ ยังไม่มีปัญหา มันคงต้องดูต่อไปว่าจะเกิดอะไรขึ้นเมื่อฉันอัพเกรดเป็น Catalina - แต่ macOS Mojave 10.14.6 ของฉันนั้นใช้ได้ทั้งสองเครื่องในตอนนี้ (2019-09-24)
echo "#include <a.h>" | gcc -v -x c -