โครงการ musl-cross ที่ให้บริการ cross-compilation toolchains โดยใช้ไลบรารี C แบบ musl ได้สร้างการอภิปรายอย่างมากในชุมชนนักพัฒนา แม้ว่าโครงการนี้จะมีเป้าหมายเพื่อทำให้การ cross-compilation สำหรับสถาปัตยกรรมต่าง ๆ ง่ายขึ้น แต่หลายแง่มุมของการใช้งานและการสร้างแบรนด์ได้ดึงดูดความสนใจจากผู้ใช้
การติดตั้งและการใช้งาน:
- ดาวน์โหลดไฟล์ tarball ที่สร้างไว้แล้วจากหน้า release
- แตกไฟล์ไปยังไดเรกทอรี
/opt/x-tools
- มีตัวเลือกสำหรับการ build ด้วยตนเองผ่านคำสั่ง
./scripts/make ${target}
- โปรเจกต์ใช้สัญญาอนุญาต MIT
- สร้างขึ้นด้วยการขอบคุณโปรเจกต์ crosstool-ng และ musl-libc
การใช้แบรนด์ GNU ที่ทำให้เข้าใจผิดสร้างความกังวล
สมาชิกในชุมชนได้ตั้งคำถามเกี่ยวกับการใช้คำศัพท์ GNU cross-tools ของโครงการ โดยชี้ให้เห็นว่าโครงการนี้ไม่มีความเกี่ยวข้องอย่างเป็นทางการกับโครงการ GNU และใช้ใบอนุญาต MIT แทนที่จะเป็น GPL ความไม่สอดคล้องกันในการสร้างแบรนด์นี้ทำให้เกิดความสับสนเกี่ยวกับความสัมพันธ์ที่แท้จริงของโครงการกับเครื่องมือและมาตรฐาน GNU
ความกังวลนี้เน้นให้เห็นปัญหาที่กว้างขึ้นเกี่ยวกับการตั้งชื่อโครงการและการระบุแหล่งที่มาในซอฟต์แวร์โอเพนซอร์ส ซึ่งการระบุความเกี่ยวข้องและใบอนุญาตอย่างชัดเจนเป็นสิ่งสำคัญสำหรับความไว้วางใจของผู้ใช้และการปฏิบัติตามกฎหมาย
สถาปัตยกรรมทางเทคนิคได้รับปฏิกิริยาที่หลากหลาย
แนวทางของโครงการในการใช้ไบนารีที่เชื่อมโยงกับ glibc ร่วมกับไลบรารีและเฮดเดอร์ musl ได้จุดประกายการถกเถียงทางเทคนิค นักพัฒนาบางคนตั้งคำถามว่าทำไมต้องรวมส่วนประกอบ glibc เมื่อ GCC และเครื่องมือที่เกี่ยวข้องสามารถคอมไพล์ได้ทั้งหมดกับ musl ดังที่แสดงให้เห็นโดยดิสทริบิวชันอย่าง Alpine Linux
ทำไมต้องมี glibc เลย? GCC และอื่น ๆ ทำงานได้ดีเมื่อคอมไพล์กับ musl (ตามที่พิสูจน์แล้วโดย Alpine ที่ใช้แค่ musl เท่านั้น)
ทางเลือกทางสถาปัตยกรรมนี้ดูเหมือนจะเป็นเพื่อความเข้ากันได้กับระบบ GNU/Linux แม้ว่าแนวทางทางเลือกอย่าง static linking จะได้รับการแนะนำโดยสมาชิกในชุมชน
สถาปัตยกรรมเป้าหมายที่รองรับ (รวม 24 แบบ):
- ตัวแปร ARM : aarch64, arm, armv7 (พร้อมตัวแปร eabi/eabihf)
- ตัวแปร x86 : i586, i686, x86_64
- ตัวแปร MIPS : mips, mipsel, mips64, mips64el (พร้อมการรองรับ soft-float)
- RISC-V : riscv32, riscv64
- PowerPC : powerpc, powerpc64
- สถาปัตยกรรมอื่นๆ: loongarch64, m68k, microblaze/microblazeel, s390x, sh4
เป้าหมายทั้งหมดใช้เวอร์ชันคอมโพเนนต์ที่สอดคล้องกัน: Linux kernel 5.4.293 (5.19.16 สำหรับ loongarch64), Binutils 2.45, GCC 15.2.0 และ Musl 1.2.5
การแข่งขันจากทางเลือกสมัยใหม่
การอภิปรายยังได้เน้นให้เห็นโซลูชันที่แข่งขันกันในพื้นที่ cross-compilation ผู้ใช้หลายคนได้ชี้ไปที่ Zig toolchain เป็นทางเลือกที่ทันสมัยกว่า โดยมีคนหนึ่งสังเกตว่าการใช้ Zig toolchain แทนสำหรับโครงการปัจจุบันนั้นสมเหตุสมผล
ตัวเลือกที่มีอยู่แล้วอื่น ๆ ที่ได้รับการกล่าวถึงรวมถึง toolchains ของ Bootlin และเครื่องมือ crossdev ของ Gentoo ซึ่งจัดการการอัปเดต toolchain โดยอัตโนมัติผ่าน package manager ทางเลือกเหล่านี้แสดงให้เห็นถึงสนามแข่งขันที่แออัดซึ่ง musl-cross ต้องสร้างความแตกต่างของตัวเองนอกเหนือจากการให้บริการ toolchains ที่ใช้ musl เพียงอย่างเดียว
สรุป
แม้ว่า musl-cross จะตอบสนองความต้องการที่แท้จริงสำหรับ cross-compilation toolchains ที่มีน้ำหนักเบา แต่การตอบสนองของชุมชนเผยให้เห็นข้อพิจารณาที่สำคัญเกี่ยวกับความถูกต้องของการสร้างแบรนด์ ทางเลือกสถาปัตยกรรมทางเทคนิค และการแข่งขันจากเครื่องมือใหม่ ๆ ความสำเร็จของโครงการอาจขึ้นอยู่กับการแก้ไขความกังวลเหล่านี้ในขณะที่แสดงให้เห็นอย่างชัดเจนถึงข้อเสนอคุณค่าที่เป็นเอกลักษณ์ในภูมิทัศน์การแข่งขันที่เพิ่มขึ้น
อ้างอิง: musl-cross