เราจะกู้คืน ppc / ppc64 รวมทั้ง 10.4 / 10.5 SDK สนับสนุน Xcode 4 ได้อย่างไร


93

เนื่องจาก Apple จัดส่งเฉพาะ SDK 10.6 พร้อม Xcode4 การพัฒนาแอปพลิเคชัน PPC ด้วย Xcode4 จึงเป็นไปไม่ได้ แม้ว่าจะมีความเป็นไปได้ในการพัฒนาแอปพลิเคชันด้วย Xcode4 ที่สามารถทำงานบน 10.5 และอาจถึงระบบ 10.4 (โดยการเลือก SDK 10.6 แต่เป้าหมายการปรับใช้ 10.5 หรือ 10.4) แอปพลิเคชันเหล่านี้จะทำงานบน Intel Mac เท่านั้นเนื่องจากคุณต้องการ SDK 10.5 เป็นอย่างน้อยสำหรับ การสร้างแอปพลิเคชัน PPC

นอกจากนี้ยังมีบางกรณีที่หายากซึ่งคุณต้องสร้างเทียบกับ SDK ก่อน 10.6 เพื่อรองรับแพลตฟอร์มเต็มรูปแบบเช่นหากฟังก์ชันการทำงานที่เลิกใช้งานบางอย่างหายไปจาก 10.6 SDK อย่างสมบูรณ์ แต่คุณจะต้องใช้มันและการเชื่อมโยงแบบไดนามิกไม่ได้ ตัวเลือกที่ดีที่สุดในกรณีเหล่านั้นเสมอ นอกจากนี้การเชื่อมโยงกับ SDK รุ่นก่อนหน้าในบางครั้งจะทำให้การพัฒนาง่ายขึ้นเนื่องจากฟังก์ชันที่คุณไม่ควรใช้เนื่องจากจะทำให้เกิดความไม่เข้ากันกับระบบปฏิบัติการเวอร์ชันก่อนหน้าจะไม่สามารถใช้งานได้และความพยายามใด ๆ ที่จะใช้งานนี้จะนำไปสู่ข้อผิดพลาดของคอมไพเลอร์หรือตัวเชื่อมโยงทันที

สุดท้าย แต่ไม่ท้ายสุด Apple ได้ลบการรองรับ GCC 4.0 ออกจาก Xcode4 ซึ่งอาจจำเป็นสำหรับซอฟต์แวร์บางตัวในการสร้างอย่างถูกต้องและ Apple ไม่เคยอนุญาตให้รวบรวมซอฟต์แวร์ด้วย GCC 4.2 เมื่อใช้ SDK 10.4 แม้ว่าฉันแทบจะไม่เชื่อว่าสิ่งนี้จะทำให้เกิดขึ้นจริงๆ ปัญหาใด ๆ หลังจากซอฟต์แวร์ทั้งหมดที่สร้างด้วย GCC 4.2 และ SDK 10.6 ยังสามารถทำงานบน Mac OS 10.4 ได้โดยไม่มีปัญหาใด ๆ ตราบเท่าที่กำหนดเป้าหมายการปรับใช้อย่างถูกต้องและไม่มีการใช้ฟังก์ชันใดที่ไม่สามารถใช้งานได้ภายใต้ MacOS 10.4

แน่นอนว่าคุณสามารถติดตั้ง Xcode3 แบบขนานถัดจาก Xcode4 ได้เสมอ แต่นั่นหมายความว่าคุณต้องละทิ้งคุณสมบัติใหม่ทั้งหมด (ที่ยอดเยี่ยม?) ของ Xcode4 และใช้งาน Xcode3 IDE ที่ล้าสมัยต่อไป แน่นอนว่าจะดีกว่ามากหากคุณสามารถจัดการโครงการเก่าทั้งหมดของคุณภายใน IDE เดียวกันกับโครงการใหม่ของคุณและรับประโยชน์จากคุณสมบัติใหม่ ๆ ที่มี ไม่ใช่ทุกโครงการที่สามารถสร้าง 10.6 หรือ Intel ได้ในอนาคตอันใกล้เท่านั้น นอกจากนี้ฉันเคร่งครัดกับการยกเลิกการสนับสนุนสำหรับแพลตฟอร์มรุ่นเก่าเร็วกว่าที่จำเป็นจริงๆ

เราสามารถกู้คืนฟังก์ชันนี้เป็น Xcode4 ได้หรือไม่?

คำตอบ:


111

คำตอบอย่างรวดเร็วคือใช่เราทำได้!

ก่อนที่ฉันจะไปที่ส่วน " วิธีการทำงาน " ต่อไปนี้เป็นบันทึกบางส่วนเกี่ยวกับโปรแกรมแก้ไข / แฮ็ก / แก้ไขของฉัน ตั้งแต่เริ่มต้นเป้าหมายหลักคือ:

  1. ทำการปรับเปลี่ยนทั้งหมดให้น้อยที่สุด
    เราต้องการให้การตั้งค่า Xcode เป็นต้นฉบับมากที่สุด

  2. พยายามหลีกเลี่ยงการแพตช์หรือแก้ไขไฟล์ใด ๆ
    เราต้องการให้ไฟล์ทั้งหมดไม่ถูกแตะต้องและรักษาเนื้อหาต้นฉบับไว้

  3. พยายามหลีกเลี่ยงการย้ายหรือคัดลอกไฟล์ไปรอบ ๆ เว้นแต่จำเป็นจริงๆ

ฉันสามารถรักษาเป้าหมายทั้งหมดนั้นไว้ได้ เกือบทุกอย่างทำได้โดยการสร้าง symlinks ต้องเปลี่ยน symlink ที่มีอยู่เพียงรายการเดียวและเราจะสำรองข้อมูลก่อนเปลี่ยนในกรณี

หากคุณไม่เชี่ยวชาญในการใช้งานเทอร์มินัลฉันขอแนะนำให้คุณคัดลอก / วางคำสั่งเทอร์มินัลทั้งหมดจากการตอบกลับของฉันไปยังเทอร์มินัลของคุณเพื่อหลีกเลี่ยงการพิมพ์ผิด โปรดทราบว่าแม้แต่การเว้นวรรคการอ้างอิงและโดยเฉพาะการใช้ตัวพิมพ์ใหญ่ก็มีความสำคัญ คัดลอก / วางทีละบรรทัดไม่เกินหนึ่งบรรทัดพร้อมกันและกด return หลังจากแต่ละบรรทัดที่วางเพื่อดำเนินการคำสั่ง หากการดำเนินการใด ๆ แจ้งให้คุณป้อนรหัสผ่านนี่จะเป็นรหัสผ่านของผู้ใช้ผู้ดูแลระบบที่ลงชื่อเข้าใช้ในปัจจุบัน (การกดแป้นพิมพ์ของคุณจะไม่ปรากฏขึ้นในขณะที่พิมพ์นี่เป็นเรื่องปกติไม่ต้องกังวลเพียงแค่พิมพ์รหัสผ่านต่อไปและกด return; - ลองหากคุณพิมพ์ผิดและได้รับแจ้งอีกครั้ง)

ข้อกำหนดเบื้องต้น

ก่อนที่เราจะเริ่มตรวจสอบให้แน่ใจว่าเงื่อนไขต่อไปนี้เป็นจริง:

  • คุณเข้าสู่ระบบในฐานะผู้ใช้ผู้ดูแลระบบ
  • คุณได้เริ่ม Terminal.app (แอพพลิเคชั่น / ยูทิลิตี้) และหน้าต่างเทอร์มินัลเปิดอยู่
  • คุณมีสำเนาของ Xcode3 (เช่น 3.2.5) และ Xcode4 ดิสก์อิมเมจ (DMG) หรือตัวติดตั้งที่พร้อมใช้งาน
  • หากคุณติดตั้ง Xcode ไว้แล้วให้ลองถอนการติดตั้งก่อนเพื่อให้คุณสามารถเริ่มต้นด้วยการตั้งค่าใหม่ / ใหม่ทั้งหมด การถอนการติดตั้ง Xcode จะไม่ลบค่ากำหนดโครงร่างสีหรือการปรับแต่งการผูกคีย์ ตามหลักการแล้วคุณจะเริ่มต้นด้วยระบบที่ไม่มีเวอร์ชัน Xcode (ไม่ได้ติดตั้ง 3 หรือ 4)

ขั้นตอนที่ 1: การติดตั้ง Xcode3

สำคัญ : อย่าติดตั้งแพ็คเกจ" System Tools " หรือ " Unix Development " ของ Xcode3
ไม่ว่าคุณจะต้องการติดตั้ง " Mac OS X 10.4 SDK " และ / หรือ " เอกสารประกอบ " ก็แล้วแต่คุณ หากเป็น Xcode3 ที่มี iOS SDK ไม่ว่าคุณจะติดตั้งหรือไม่ก็ตามก็ขึ้นอยู่กับคุณด้วย

คุณมีอิสระที่จะเลือกโฟลเดอร์ปลายทางสำหรับการติดตั้งของคุณ สำหรับคู่มือนี้ฉันได้เลือก " / Xcode3 " แต่อย่าลังเลที่จะเลือกอันอื่น ตรวจสอบให้แน่ใจว่าได้ปรับเปลี่ยนคำสั่งเทอร์มินัลทั้งหมดตามนั้น

ลำดับของขั้นตอนที่ให้ไว้ที่นี่มักจะไม่สำคัญมากนัก แต่ฉันขอแนะนำให้คุณอย่าสลับขั้นตอนที่ 1 และขั้นตอนที่ 2 Xcode จะติดตั้งไฟล์สองสามไฟล์นอกโฟลเดอร์ปลายทางที่เลือกเสมอและเชื่อใจฉันในที่สุดคุณก็ต้องการ Xcode4 เวอร์ชันของไฟล์เหล่านั้นบนดิสก์ของคุณ ด้วยการติดตั้ง Xcode3 ก่อน Xcode4 คุณสามารถมั่นใจได้ว่า Xcode4 จะเขียนทับไฟล์เหล่านั้นหากจำเป็น ฉันเคยสลับขั้นตอนที่ 1 และ 2 และในที่สุดฉันก็มีปัญหาแปลก ๆ ที่อาจเกี่ยวข้องกับลำดับที่ไม่ถูกต้อง (ฉันไม่สามารถพูดได้อย่างแน่นอน แต่หลังจากติดตั้งใหม่ตามลำดับที่ถูกต้องปัญหาก็หายไป)

ขั้นตอนที่ 2: การติดตั้ง Xcode4

เลือกแพ็คเก็ตที่คุณต้องการ แนะนำให้ติดตั้ง " System Tools " แต่ไม่จำเป็นอย่างยิ่ง (แม้ว่าคนส่วนใหญ่จะพลาดฟังก์ชันนั้นไม่ช้าก็เร็ว)

อีกครั้งอย่าลังเลที่จะเลือกโฟลเดอร์เป้าหมายที่คุณต้องการ สำหรับคำแนะนำนี้ฉันเลือกโฟลเดอร์เป้าหมายปกติ " / Developer " หากคุณใช้โฟลเดอร์อื่นให้แก้ไขคำสั่งเทอร์มินัลทั้งหมดตามนั้น

ขั้นตอนที่ 3: กู้คืนการสนับสนุน SDK 10.4 / 10.5

สลับไปที่หน้าต่างเทอร์มินัลของคุณและเรียกใช้คำสั่งต่อไปนี้:

cd / ผู้พัฒนา / SDK
sudo ln -s /Xcode3/SDKs/MacOSX10.4u.sdk
sudo ln -s /Xcode3/SDKs/MacOSX10.5.sdk

แน่นอนรันคำสั่งสำหรับ 10.4u เท่านั้นหากคุณติดตั้ง SDK 10.4 ในขั้นตอนที่ 1

แค่นี้ก็เพียงพอแล้วที่จะนำ SDKs 10.5 (และอาจเป็น 10.4) กลับไปที่รายการการเลือกใน Xcode4 ลองดูสิถ้าคุณชอบ เปิด Xcode4 เปิดโปรเจ็กต์ลองเปลี่ยน SDK ที่เลือก มันง่ายใช่มั้ย? อย่าลืมปิด Xcode4 อีกครั้ง (แอปพลิเคชันไม่ใช่แค่หน้าต่าง) ก่อนดำเนินการขั้นตอนต่อไป

ขั้นตอนที่ 4: การกู้คืนการสนับสนุน GCC 4.0

หากคุณไม่ได้ติดตั้ง MacOS 10.4 SDK หรือหากคุณไม่มีแผนที่จะใช้งานคุณสามารถข้ามขั้นตอนนี้ได้อย่างปลอดภัยและดำเนินการตามขั้นตอนที่ 5

ในการใช้ SDK 10.4 คุณจะต้องใช้ GCC 4.0, GCC 4.2 จะไม่ทำงาน Apple อ้างว่า GCC 4.2 เข้ากันไม่ได้กับ SDK 10.4 ถ้าคุณถามฉันนี่เป็นเรื่องหลอกลวง ฉันได้เขียนทับข้อ จำกัด นี้มากกว่าหนึ่งครั้งแล้วและไม่เคยมีปัญหาเล็กน้อยที่สุดเพราะมัน การแก้ไข SDK 10.4 จะเป็นเรื่องง่ายเพื่อให้ Xcode อนุญาตให้คุณใช้ GCC 4.2 ได้ แต่เป้าหมายของฉันคือหลีกเลี่ยงการแก้ไขไฟล์ทั้งหมดดังนั้นเราจึงเพิ่มการสนับสนุน GCC 4.0 กลับไปที่ Xcode ซึ่งเป็นสิ่งที่ดีเช่นกันเพราะ บางโครงการขึ้นอยู่กับ GCC 4.0 จริงๆ (เช่นมีข้อบกพร่องบางอย่างใน GCC 4.2 ที่ป้องกันไม่ให้รหัสแอสเซมบลีแบบอินไลน์ที่ถูกต้องคอมไพล์โดยไม่มีข้อผิดพลาดในขณะที่โค้ดเดียวกันรวบรวมอย่างไร้ที่ติบน GCC 4.0 และ GCC 4.4)

กลับไปที่เทอร์มินัล:

cd / ผู้พัฒนา / usr / bin
sudo ln -s /Xcode3/usr/bin/*4.0*

cd / ผู้พัฒนา / usr / libexec / gcc / powerpc-apple-darwin10
sudo ln -s /Xcode3/usr/libexec/gcc/powerpc-apple-darwin10/4.0.1

ตอนนี้เราได้กู้คืนการสนับสนุน GCC 4.0 เต็มรูปแบบแล้วยกเว้นข้อเท็จจริงที่ว่า GCC 4.0 ยังไม่สามารถเลือกได้ใน Xcode4 นั่นเป็นเพราะ Xcode4 ไม่มีปลั๊กอินคอมไพเลอร์ GCC 4.0 อีกต่อไป โชคดีที่ปลั๊กอิน Xcode3 ทำงานใน Xcode4 ได้เช่นกันมีเพียงตำแหน่งเท่านั้นที่เปลี่ยนไปอย่างสิ้นเชิง ตอนนี้ Apple ซ่อนปลั๊กอินเหล่านั้นไว้ลึก ๆ ภายในชุดรวมและดูเหมือนว่าจะมีเพียงปลั๊กอินที่ใช้งานได้การวางไว้ในตำแหน่งเดิมดูเหมือนจะไม่มีผลใด ๆ

cd / Developer / Library / Xcode / PrivatePlugIns
cd Xcode3Core.ideplugin / Contents / SharedSupport / Developer / Library / Xcode / Plug-ins
sudo ln -s "/ Xcode3 / Library / Xcode / Plug-ins / GCC 4.0.xcplugin"

ตอนนี้เปิด Xcode4 อีกครั้งเปิดโปรเจ็กต์แล้วลองเลือกคอมไพเลอร์ คุณควรมี GCC 4.0 กลับมาในรายการ ตอนนี้คุณสามารถเลือก SDK 10.4 หรือ 10.5, GCC 4.0 ได้แล้วและคุณไม่ควรมีปัญหาในการสร้างไบนารี PPC เพียงเลือก " อื่น ๆ ... " สำหรับการตั้งค่าการสร้าง " สถาปัตยกรรม " และป้อน " ppc " ด้วยตนเองจากนั้นแก้ไข " สถาปัตยกรรมที่ถูกต้อง " เพื่อรวม " ppc " เกือบเสร็จแล้วยกเว้นว่าการพยายามสร้างไบนารี PPC โดยใช้ GCC 4.2 และ SDK 10.5 จะยังคงล้มเหลว

ขั้นตอนที่ 5: การกู้คืนการสนับสนุน PPC สำหรับ GCC 4.2

เนื่องจาก Apple สนับสนุนเฉพาะแพลตฟอร์ม Intel ใน Xcode4 จึงไม่ได้สร้างเครื่องมือ GCC 4.2 ทั้งหมดที่รองรับ PPC มีเครื่องมือสำคัญอย่างหนึ่งที่ไม่มีการสนับสนุน PPC เครื่องมือนี้มีชื่อว่า " as " และเป็น GNU Assembler ในการคอมไพล์ไบนารี ppc / ppc64 ด้วย GCC 4.2 เราจำเป็นต้องใช้เวอร์ชัน " เป็น " ที่รองรับ ppc / ppc64 นี่เป็นไฟล์เดียวเท่านั้น (จริงๆแล้วมันก็เป็น symlink ด้วย) เราต้องย้ายไปก่อน (ทำสำเนาสำรอง) ก่อนที่เราจะสามารถแทนที่ด้วย symlink:

cd /Developer/usr/libexec/gcc/powerpc-apple-darwin10/4.2.1
sudo mv เป็น as.bak
sudo ln -s / Xcode3 / usr / bin / เป็น.

ขั้นตอนที่ 6: ไม่มีขั้นตอนที่ 6

นั่นคือคนทั้งหมด เมื่อพิจารณาว่ามันง่ายแค่ไหนคุณสามารถจินตนาการได้ว่า Apple ไม่ได้ทิ้งการรองรับ SDK 10.4 / 10.5 หรือ ppc / ppc64 หรือ GCC 4.0 อย่างแน่นอนเพราะนี่เป็นสิ่งจำเป็นพวกเขาจึงทิ้งทั้งหมดนั้นเพราะต้องการทิ้ง

ฉันหวังว่าการตั้งค่านี้จะใช้งานได้ดีสำหรับคุณเช่นเดียวกับฉัน ฉันสามารถรวบรวมโปรเจ็กต์เก่าทั้งหมดของฉันใน Xcode4 โดยไม่มีการเปลี่ยนแปลงใด ๆ ที่สำคัญยกเว้นว่าจะต้องเปลี่ยนเส้นทางการค้นหาที่นี่และที่นั่น

PS:
อาจดูแปลกที่ฉันตอบคำถามของตัวเองที่นี่ แต่เนื่องจากฉันได้ค้นพบวิธีแก้ปัญหานี้ทั้งหมดด้วยตัวเองฉันจึงต้องการแบ่งปันความรู้ของฉันกับชุมชนเพราะฉันเชื่อว่านี่เป็นข้อมูลที่มีค่าสำหรับ นักพัฒนา MacOS ทั้งหมดที่นั่น คำถามนี้ถูกถามหลายครั้งในหลาย ๆ ที่และจนถึงตอนนี้ฉันไม่เคยเห็นใครคิดวิธีแก้ไขแบบเดียวกันนี้ แบ่งปันความมั่งคั่งกระจายความรู้และอื่น ๆ คุณรู้ว่าฉันหมายถึงอะไร


หากคุณยังคงมีปัญหา / คำถาม:

หากคุณมีคำถามเพิ่มเติมเกี่ยวกับหัวข้อนี้หรือหากคุณยังมีปัญหาในการสร้างโครงการเก่าของคุณอย่างถูกต้องโปรดทำตามที่ Stack Overflow ออกแบบมาสำหรับ: คลิกที่ "ถามคำถาม" ที่มุมขวาบนของหน้านี้และสร้างคำถามใหม่ . วิธีนี้ทั้งชุมชนจะช่วยคุณแก้ปัญหาเหล่านั้นได้เนื่องจากปัญหาอาจไม่เกี่ยวข้องโดยตรง (อาจไม่ได้เป็นทางอ้อม) กับการแฮ็กนี้

ฉันอยากจะแนะนำให้คุณพูดถึงข้อเท็จจริงที่ว่าคุณใช้แฮ็คนี้ในตอนต้นของคำถามของคุณ บางทีคุณอาจต้องการเชื่อมโยงโดยตรงกับคำถามนี้เพื่อให้ผู้ที่ไม่เคยได้ยินเกี่ยวกับแฮ็คนี้สามารถค้นหาได้อย่างง่ายดาย มิฉะนั้นคนส่วนใหญ่จะค่อนข้างสับสนเมื่อคุณพูดถึง SDK 10.4 / 10.5, PPC หรือ GCC 4.0 ร่วมกับ Xcode4 ซึ่งไม่สนับสนุนทั้งสองอย่างนี้อย่างเป็นทางการ คุณอาจได้รับความคิดเห็นที่ค่อนข้างโง่แทนการตอบกลับที่ดีหากคุณลืมพูดถึงแฮ็คนี้

โปรดอย่าโพสต์คำถามหรือปัญหาของคุณที่นี่ไม่ว่าจะเป็นการตอบกลับหรือแสดงความคิดเห็น การโพสต์เป็นคำตอบไม่มีเหตุผลเพราะไม่มีการตอบกลับและไม่มีวิธีใดที่ผู้คนจะตอบกลับคุณได้การใช้ความคิดเห็นอื่น ๆ และความคิดเห็นอาจไม่เพียงพอสำหรับการตอบกลับคำถามของคุณหรือวิธีแก้ปัญหาที่เหมาะสมสำหรับคุณ ปัญหา. และการโพสต์เป็นความคิดเห็นหมายความว่าคุณถูก จำกัด ให้มีพื้นที่ว่างน้อยมากและการติดตามความคิดเห็นตอบกลับจะทำได้ยากเนื่องจากความคิดเห็นไม่มีลำดับชั้นที่เหมือนต้นไม้ ขอขอบคุณ.

แน่นอนความคิดเห็นประเภทอื่น ๆ รวมถึงการตอบกลับที่ดีกว่าสำหรับคำถามเดิมยินดีต้อนรับเสมอ ;-)


6
นี่คือการโหวตเพิ่ม ฉันอาจจะคัดลอก SDK เก่าและไฟล์คอมไพเลอร์แทนที่จะแค่เชื่อมโยงกันเพื่อที่จะสามารถถอนการติดตั้ง Xcode3 ที่เหลือได้ ไม่ใช่เพราะฉันรัก Xcode4; เพียงเพราะฉันต้องการพื้นที่ดิสก์ ขอบคุณ!
Ivan Vučica

ฉันไม่สามารถทำงานนี้ได้ โปรดดูคำถาม SO ของฉัน: stackoverflow.com/questions/5409860/…
paleozogt

นอกจากนี้เพื่อให้ได้อาคาร gcc 4.0 สำหรับเป้าหมาย i686 ฉันต้องทำสิ่งต่อไปนี้: sudo ln -s /Xcode3/usr/libexec/gcc/i686-apple-darwin10/4.0.1 / Developer / usr / libexec / gcc / i686-apple-darwin10 / sudo ln -s /Developer/SDKs/MacOSX10.6.sdk/usr/lib/gcc/i686-apple-darwin10/4.0.1/ / ผู้พัฒนา / usr / lib / gcc / i686- apple-darwin10 / sudo ln -s /Developer/SDKs/MacOSX10.6.sdk/usr/lib/gcc/i686-apple-darwin10/4.0.1/ / usr / lib / gcc / i686-apple-darwin10 /
ทำเครื่องหมาย Carey

2
บรรทัดนี้for SRC_FILE in /Xcode3/usr/bin/*4.0*; do sudo ln -s "$SRC_FILE" .; doneสามารถทำให้ง่ายขึ้นถึงsudo ln -s /Xcode3/usr/bin/*4.0* .
Adam Rosenfield

1
@cullub ไปที่developer.apple.comเข้าสู่ระบบด้วยรหัสนักพัฒนาของคุณเลือก "SDK" เลื่อนลงและเลือก "Xcode" เลือก "ดาวน์โหลด" เลื่อนลงและเลือก "เครื่องมือเพิ่มเติม" ค้นหา "Xcode 3" ในช่องค้นหา
Mecki

15

อีกวิธีง่ายๆด้วย Xcode4 เท่านั้น Xcode3 ก็ไม่จำเป็นอีกต่อไป

$ sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /Developer/usr/libexec/gcc/darwin
$ sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /usr/libexec/gcc/darwin

แก้ไข:

สำหรับ Xcode 4.1

sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /Developer/usr/libexec/gcc/darwin
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gcc/darwin/ppc /usr/libexec/gcc/darwin
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-cpp-4.2.1 /usr/bin/powerpc-apple-darwin11-cpp-4.2.1
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-gcc-4.2.1 /usr/bin/powerpc-apple-darwin11-gcc-4.2.1
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-g++-4.2.1 /usr/bin/powerpc-apple-darwin11-g++-4.2.1
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-cpp-4.2.1 /Developer/usr/bin/powerpc-apple-darwin11-cpp-4.2.1
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-gcc-4.2.1 /Developer/usr/bin/powerpc-apple-darwin11-gcc-4.2.1
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/powerpc-apple-darwin10-g++-4.2.1 /Developer/usr/bin/powerpc-apple-darwin11-g++-4.2.1
sudo ln -s /Developer/Platforms/iPhoneOS.platform/Developer/usr/lib/gcc/powerpc-apple-darwin10 /Developer/SDKs/MacOSX10.6.sdk/usr/lib/gcc

คุณสามารถใช้ gcc-4.2 สำหรับ PowerPC เท่านั้น และต้องมีตัวเลือก“ -isysroot /Developer/SDKs/MacOSX10.6.sdk” เนื่องจาก 10.7 SDK ไม่รองรับ PowerPC อีกต่อไป


3
ฮ่า ๆ ดังนั้น apple จึงรองรับ PPC ในคอมไพเลอร์ iOS :-P อย่างไรก็ตามคุณควรสังเกตว่านี่จะคืนค่าความเข้ากันได้ของ PPC เท่านั้น แต่จะไม่คืนค่า SDK หรือการสนับสนุน GCC4.0 ยังคงคุ้มค่ากับการโหวต
Mecki

แฮ็กมากและง่ายกว่าข้างต้นซึ่งเป็นขั้นต่ำที่จำเป็นแน่นอน
Diziet

เปิดใช้งาน toolchain PowerPC บน Xcode 4.1 gcc-4.2 เท่านั้น ต้องใช้ตัวเลือก "-isysroot /Developer/SDKs/MacOSX10.6.sdk" เนื่องจาก 10.7 SDK ไม่มีส่วนหัวสำหรับ PowerPC อีกต่อไป
Kazuki Sakamoto

stackoverflow.com/questions/11989007เกี่ยวข้องกับการขอรับ 10.6 SDK เช่นอยู่ใน Xcode 4.1
fommil

8

ฉันได้รวบรวมข้อมูลทั้งหมดจากหน้านี้ MacOS X Hints, splhack.org และแหล่งข้อมูลอื่น ๆ ที่อ้างถึงที่นี่และรวบรวมชุดสคริปต์ BASH ซึ่งทำให้กระบวนการกู้คืนการสนับสนุน PPC และ GCC 4.0 โดยอัตโนมัติโดยใช้ การติดตั้ง XCode 3 หรือเพียงแค่ไฟล์แพลตฟอร์ม iPhone ของ XCode 4

เช่นเคยโปรดใช้ด้วยความระมัดระวัง! และโปรดมีส่วนร่วมในการแก้ไขหรือปรับปรุง สคริปต์เหล่านี้ได้รับการทดสอบในระบบของฉันเองเมื่อโพสต์นี้เท่านั้น

คุณสามารถดาวน์โหลดได้จาก GitHub:


ว้าวเจ๋งมาก :-) ฉันอยากจะสร้างสคริปต์แบบนี้ด้วยตัวเอง แต่ไม่มีเวลาสำหรับมัน ขอบคุณที่แบ่งปันกับเรา
Mecki

4

หากคุณต้องการให้ gcc ทำงานจากบรรทัดคำสั่งเช่นกัน (เช่นเดียวกับด้านบน) คุณจะต้อง:

cd /usr/libexec/gcc/powerpc-apple-darwin10/4.2.1
sudo mv as as.bak
sudo ln -s /Xcode3/usr/bin/as .

3

สิ่งนี้ยังคงใช้งานได้กับ Xcode 4.3.2 จาก AppStore ซึ่งเป็นเวอร์ชันที่ทุกอย่างมีอยู่ใน App Bundle ตามคำแนะนำดั้งเดิมให้ติดตั้ง Xcode 3.2.6 ก่อน * แล้วดาวน์โหลด Xcode 4 จาก AppStore จากนั้นทำมายากล symlink ต่อไปนี้:

cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
ln -s /Developer/Xcode3.2.6/SDKs/MacOSX10.5.sdk .
cd /Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2/bin/
ln -s /Developer/Xcode3.2.5/usr/llvm-gcc-4.2/bin/powerpc-apple-darwin10-llvm-g* .
mv powerpc-apple-darwin10-llvm-gcc-4.2 powerpc-apple-darwin11-llvm-gcc-4.2
mv powerpc-apple-darwin10-llvm-g++-4.2 powerpc-apple-darwin11-llvm-g++-4.2

สองบรรทัดสุดท้ายเปลี่ยนชื่อ darwin10 เป็น darwin11 ใน symlink - ฉันเดาว่าเวอร์ชันอนาคตของ OS X จะต้องได้รับการอัปเดตตามความเหมาะสม

  • ในการติดตั้ง Xcode 3.2.x บน Lion ให้ติดตั้งภาพดิสก์ Xcode เปิด Terminal ป้อนคำสั่ง (โดยใช้ bash หรือคำสั่งที่เทียบเท่าหากคุณเปลี่ยนเชลล์เริ่มต้นของคุณ):

    ส่งออก COMMAND_LINE_INSTALL = 1 open "/ Volumes / Xcode และ iOS SDK / Xcode และ iOS SDK.mpkg"

คุณจะต้องตั้งค่านาฬิกาย้อนกลับไปเป็นวันที่ก่อนวันที่ 31 มีนาคม 2555 มิฉะนั้นใบรับรองความปลอดภัยจะไม่ผ่านการตรวจสอบระหว่างการติดตั้ง คุณสามารถเปลี่ยนวันกลับได้อย่างปลอดภัยอีกครั้งหลังการติดตั้งอย่างชัดเจน!


2

ในกรณีที่มีคนต้องการกู้คืน SDK และคอมไพเลอร์ PPC เก่าใน Xcode 4.3 และ 4.5 ​​นี่คือสคริปต์ที่ฉันสร้างขึ้น โปรดทราบว่าคุณต้องกำหนดเส้นทางไปยังชุดแอป Xcode และเส้นทางไปยัง Xcode 3.2.6 ติดตั้งที่จุดเริ่มต้นของสคริปต์

#!/bin/bash

XCODE="/Applications/Xcode45-DP1.app"
XCODE3="/Xcode3"

# restore SDKs
cd "$XCODE/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs"
sudo ln -s "$XCODE3/SDKs/MacOSX10.4u.sdk" .
sudo ln -s "$XCODE3/SDKs/MacOSX10.5.sdk" . 
sudo ln -s "$XCODE3/SDKs/MacOSX10.6.sdk" . 

# restore gcc 4.0
cd "$XCODE/Contents/Developer/usr/bin"
sudo ln -s "$XCODE3/usr/bin/"*4.0* .
sudo ln -s "powerpc-apple-darwin10-g++-4.0.1" "powerpc-apple-darwin11-g++-4.0.1"
sudo ln -s "powerpc-apple-darwin10-gcc-4.0.1" "powerpc-apple-darwin11-gcc-4.0.1"

# restore Xcode option
cd "$XCODE/Contents/PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins"
sudo ln -s "$XCODE3/Library/Xcode/Plug-ins/GCC 4.0.xcplugin" . 

คุณไม่จำเป็นต้อง symlink 10.6 SDK หากคุณใช้ Xcode 4.3 เนื่องจากมีมาให้

นอกจากนี้สคริปต์ไม่คืนค่า gcc 4.2 เนื่องจากมีความขัดแย้งของชื่อไฟล์จำนวนมากที่ทำเช่นนั้น เป้าหมายของฉันคือการกู้คืนคอมไพเลอร์ PPC และ 4.0 นั้นดีพอสำหรับฉัน


2

Frédéric Devernay มีโปรเจ็กต์ GitHub ที่เรียกว่าxcodelegacyซึ่งใช้งานได้ยอดเยี่ยมสำหรับฉันใน Xcode 5.1.1 และต้องการงานเพียงเล็กน้อยเพื่อให้มันทำงานได้เพียงดาวน์โหลดบางส่วน

ด้วยการใช้โครงการของเขาฉันได้จัดการสร้างไบนารีสากลที่มีทั้งสถาปัตยกรรม ppc และ i386 ที่รวบรวมด้วย 10.4 SDK โดยใช้ GCC 4.0 ทั้งหมดจากภายใน Xcode 5.1.1 ที่ทำงานบน Yosemite

ฉันยืนยันตัวเองแล้วว่าไบนารีสากลสร้างขึ้นได้ดีใน 10.5 Leopard และบน Yosemite เอง

โฮมเพจที่นี่: http://devernay.free.fr/hacks/xcodelegacy

โครงการฮับ Git ที่นี่: https://github.com/devernay/xcodelegacy


1

การมีแพ็คเกจเพื่อติดตั้งไฟล์เหล่านี้ในการใช้งาน XCode 4 จะเป็นประโยชน์ (หรือทาร์บอล)

FYI: 3.2.6 ของ Xcode3 ไม่รวม as กับสถาปัตยกรรม ppc แต่ฉันมีข้อมูลสำรองของ Leopard ในคอมพิวเตอร์ของฉัน ก็เลยคัดลอกอันนั้นดูเหมือนจะใช้ได้ (ใช้ / usr / libexec / gcc / darwin / ppc / as)

พิจารณาว่าทั้ง gcc และ as เป็นโอเพ่นซอร์สสิ่งเดียวที่ไม่สามารถแจกจ่ายต่อได้คือปลั๊กอิน xcode และ 10.4 SDK ใช่ไหม


ฉันไม่ใช่ผู้เชี่ยวชาญในคำถามการออกใบอนุญาต "as -v" ระบุว่า "Apple Inc เวอร์ชัน cctools-795 ~ 45, GNU แอสเซมเบลอร์เวอร์ชัน 1.38" อย่างไรก็ตามแม้ว่า Apple จะแก้ไขซอร์สโค้ดของ "เป็น" แต่ก็ยังได้รับอนุญาตภายใต้ GPL (โค้ด GPL ที่แก้ไขจะเป็นไปโดยอัตโนมัติ GPL อีกครั้ง) ดังนั้นหาก GPL อนุญาตให้คุณทำเช่นนั้นคุณก็จะโอเค
Mecki

โอเคฉันคิดว่าเหตุผลของฉันว่าทำไมเราต้องแทนที่ "เป็น" ว่าผิด ดูเหมือนว่า "as" ของ Xcode 3.2.6 จะทำงานได้ดีแม้ว่าจะเป็น Intel เท่านั้น แต่ก็ยังสามารถสร้างเอาต์พุตการประกอบ ppc ได้ ฉันจะแก้ไขการตอบกลับครั้งแรกของฉัน ขอบคุณที่ชี้ให้เห็น!
Mecki

จริงๆแล้วอย่างน้อยก็จากบรรทัดคำสั่งมันไม่ได้ มันเอาแต่บ่นจนกระทั่งฉันคว้าจากข้อมูลสำรองของ Leopard
Jason Kenney
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.