Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Windows

วิธีคอมไพล์โปรแกรม Linux บน Windows ด้วย Cygwin

Windows และ Linux เป็นระบบที่แตกต่างกันมาก ทำให้การ Port โปรแกรมจากระบบหนึ่งไปอีกระบบหนึ่งไม่ง่าย โดยเฉพาะโปรแกรม GUI แม้จะมี Cross-platform Libraries และ SDKs มากมาย โปรแกรม Native ที่เขียนโดยไม่คิดถึง Portability ยากมากที่จะ Port

สำหรับการคอมไพล์และรันโปรแกรม Linux บน Windows มีโซลูชันชื่อ Cygwin โปรเจกต์ Cygwin รวบรวมเครื่องมือและคอมไพเลอร์ทั่วไป (Bash Shell, GNU Compiler Chain) สำหรับ Windows พร้อม Library ให้เข้ากันได้กับ Linux API โปรแกรมจึงคอมไพล์ได้ Cygwin ไม่ใช่ Emulator หรือ VM ไม่รัน Binary Linux ได้โดยตรง ต้อง Re-compile ก่อน

ขั้นตอนติดตั้ง Cygwin

  1. ไปหน้าดาวน์โหลด Cygwin โหลด Setup 32-bit หรือ 64-bit ตาม Windows
  2. รัน Setup → Next → Next (Install from Internet)
  3. โฟลเดอร์เริ่มต้น C:\cygwin (แนะนำให้คงไว้) → Next ×3
  4. เลือก Mirror Site ใกล้ที่สุด → Next
  5. เลือก Packages ที่ต้องการ: ค้นหา gcc → Devel → คลิก Skip ที่ gcc-core และ gcc-g++ (จะกลายเป็นหมายเลขเวอร์ชัน) → ค้นหา make → Devel → Skip → ค้นหา wget → Web → Skip → ค้นหา libiconv → Skip
  6. Next → Installer จะแก้ Dependency เอง → Next ยอมรับ
  7. รอติดตั้งเสร็จ → Finish → เปิด Cygwin Terminal

ใน Terminal ใช้คำสั่ง Linux เช่น ls แทน dir ของ Windows

ตัวอย่าง: คอมไพล์ HTML-XML Utils จาก W3C

wget https://www.w3.org/Tools/HTML-XML-utils/html-xml-utils-6.7.tar.gz
tar -zxf html-xml-utils-6.7.tar.gz
cd html-xml-utils-6.7
./configure
make

Build จะล้มเหลวกลางทาง เพราะ Linker หา Library iconv ไม่เจอ วิธีแก้ด่วน: รันคำสั่ง GCC เองพร้อม -liconv

gcc -g -O2 -o hxindex.exe hxindex.o scan.o html.o openurl.o url.o heap.o class.o errexit.o connectsock.o types.o tree.o genid.o dtd.o headers.o dict.o fopencookie.o -liconv

เมื่อ hxindex.exe สร้างเสร็จ ให้รัน make อีกครั้ง จะต่อจากที่หยุดไว้ จนได้ไฟล์ .exe ทั้งหมดในโฟลเดอร์

หากค้าง ตรวจสอบ FAQ, Documentation หรือ Mailing List ของ Cygwin