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