- วิศวกรซอฟต์แวร์คนหนึ่งได้เขียนแพตช์สำหรับ GCC เพื่อทำให้การสร้างไฟล์ปฏิบัติการที่พกพาได้จริงด้วย Cosmopolitan Libc ง่ายขึ้น
- แพตช์นี้ทำให้สามารถคอมไพล์ซอฟต์แวร์ยอดนิยมอย่าง bash, curl, git และแม้แต่ gcc เองด้วย Cosmopolitan Libc ได้โดยไม่ต้องแก้ซอร์สโค้ด
- ไฟล์ปฏิบัติการที่สร้างขึ้นสามารถรันได้บน Linux, FreeBSD, MacOS, OpenBSD, NetBSD และในบางกรณีกับ Windows
- บทความนี้ให้คำแนะนำแบบทีละขั้นตอนเกี่ยวกับวิธีพอร์ตซอฟต์แวร์ของตนเองไปยัง Cosmopolitan Libc
- แพตช์นี้แก้ปัญหาใน
switch statement และการกำหนดค่าเริ่มต้นให้โครงสร้างข้อมูลที่พึ่งพาค่าของระบบ
- ผู้เขียนในตอนแรกพยายามทำให้การแปลงเป็นอัตโนมัติด้วยสคริปต์
sed และ Python เพราะ C preprocessor และ ifdef แต่ก็ไม่สามารถทำงานได้ครบถ้วน
- จากนั้นผู้เขียนได้สำรวจการใช้ปลั๊กอิน GCC และการแพตช์ GCC เองเพื่อแก้ปัญหา
- เมื่อใช้ GCC ที่ถูกแพตช์แล้ว ก็สามารถคอมไพล์ซอฟต์แวร์ด้วย Cosmopolitan Libc ได้ ทำให้กระบวนการพอร์ตทำได้ง่ายและลื่นไหลขึ้น
- ผู้เขียนสามารถคอมไพล์ lua ได้สำเร็จ และได้ปรับเปลี่ยน python3.11 เพื่อเข้าถึงที่เก็บ ZIP
- ระหว่างการคอมไพล์ busybox ซึ่งใช้อาร์เรย์สตริงเป็นตาราง lookup ผู้เขียนพบความยากลำบาก
- ยังมีความท้าทายเกี่ยวกับการกำหนดค่าเริ่มต้นให้โครงสร้างข้อมูลใน ncurses เนื่องจาก binary expression
- ผู้เขียนสรุปว่าในกรณีส่วนใหญ่ การเปลี่ยนแปลงที่จำเป็นสำหรับการพอร์ตซอฟต์แวร์ไปยัง Cosmopolitan Libc มีน้อยมาก
- ผู้เขียนยอมรับว่าแพตช์นี้อาจยังไม่สมบูรณ์แบบและอาจมีข้อจำกัดบางประการ
- ผู้เขียนสนับสนุนให้ผู้อ่านลองคอมไพล์ซอฟต์แวร์ C ด้วย Cosmopolitan Libc
- ผู้เขียนกล่าวถึงความเป็นไปได้ที่ไฟล์ปฏิบัติการจะสามารถรันบน Windows ได้ แต่ยังไม่ได้ทดสอบ
- ผู้เขียนให้ข้อมูลและเอกสารอ้างอิงเพิ่มเติม
3 ความคิดเห็น
ตอนนี้ neo จะใช้รูปแบบที่ครอบข้อความด้วยโค้ดบล็อกจริง ๆ แล้วเหรอ? ที่ต้องเลื่อนแนวนอนค่อนข้างน่าเสียดาย แล้วก็สีข้อความโทนแดงก็แอบน่าเสียดายนิดหน่อย...
อ๊ะ การถูกครอบด้วยโค้ดบล็อกเป็นบั๊กครับ ฮือ
ความคิดเห็นจาก Hacker News