Computer >> คอมพิวเตอร์ >  >> ระบบ >> Windows

วิธีการคอมไพล์โปรแกรม Linux ภายใต้ Windows ด้วย Cygwin

วิธีการคอมไพล์โปรแกรม Linux ภายใต้ Windows ด้วย Cygwin

วิธีการคอมไพล์โปรแกรม Linux ภายใต้ Windows ด้วย CygwinWindows และ Linux เป็นสองระบบที่แตกต่างกันมาก และด้วยเหตุนี้ การพอร์ตโปรแกรมที่เขียนขึ้นจึงไม่ใช่เรื่องง่าย เพื่อกันโดยเฉพาะเมื่อต้องจัดการกับโปรแกรม GUI แม้ว่าจะมีไลบรารีและ SDK ข้ามแพลตฟอร์มที่แตกต่างกันมากมาย แต่โปรแกรมเนทีฟที่เขียนโดยไม่ได้คำนึงถึงการพกพานั้นค่อนข้างยากที่จะพอร์ต

เมื่อพูดถึงการคอมไพล์และรันโปรแกรมที่เขียนขึ้นสำหรับ Linux บน Windows มีวิธีแก้ปัญหาที่เรียกว่า Cygwin โปรเจ็กต์ Cygwin คือชุดของเครื่องมือและคอมไพเลอร์ทั่วไป (รวมถึง bash shell และ GNU compiler chain) สำหรับ Windows นอกจากนี้ยังมีไลบรารี่ที่มีเลเยอร์ความเข้ากันได้เพื่อให้สามารถคอมไพล์โปรแกรมที่เรียกใช้ API เฉพาะของ Linux ได้ Cygwin ไม่ใช่โปรแกรมจำลองหรือเครื่องเสมือน และไม่อนุญาตให้ไบนารีของ Linux ทำงานบน Windows โดยไม่ต้องคอมไพล์ใหม่ก่อน

ไปที่หน้าการติดตั้ง Cygwin และดาวน์โหลดไฟล์ปฏิบัติการการติดตั้งแบบ 32 บิตหรือ 64 บิต (ขึ้นอยู่กับรุ่นของ Windows ที่คุณใช้) ดำเนินการติดตั้งโปรแกรม คลิกถัดไปและถัดไปอีกครั้ง (เพื่อ "ติดตั้งจากอินเทอร์เน็ต") ไดเร็กทอรีเริ่มต้นคือ “C:\cygwin” สามารถเปลี่ยนแปลงได้หากจำเป็น แต่ถ้าคุณมีเหตุผลเฉพาะในการเปลี่ยนแปลง ค่าเริ่มต้นจะดีที่สุด คลิกถัดไป ถัดไป และถัดไปอีกครั้ง

โครงการ Cygwin มีไซต์มิเรอร์อยู่ทั่วโลก เลือกหนึ่งรายการที่คุณคิดว่าจะให้บริการตำแหน่งของคุณดีที่สุดแล้วคลิกถัดไป ตอนนี้คุณต้องเลือกแพ็คเกจที่จะติดตั้ง ในการรวบรวมโปรแกรม Linux อย่างง่ายใน Windows คุณจะต้องใช้ GNU Compiler Chain (GCC) ซึ่งมีคอมไพเลอร์ C และ C++

วิธีการคอมไพล์โปรแกรม Linux ภายใต้ Windows ด้วย Cygwin

พิมพ์ “gcc” ในช่องค้นหา จากนั้นคลิกเครื่องหมายบวกเล็กๆ ข้าง “Devel” ในรายการแพ็คเกจ ค้นหา "gcc-core" และ "gcc-g++" แล้วคลิก "ข้าม" สำหรับแต่ละอัน คำว่า "ข้าม" จะเปลี่ยนเป็นหมายเลขเวอร์ชันและเครื่องหมาย "n/a" ใน "Bin?" คอลัมน์จะกลายเป็นกล่องกาเครื่องหมาย พิมพ์ "make" ในช่องค้นหาและค้นหา "make" ใต้ "Devel" คลิก "ข้าม" เพื่อทำเครื่องหมายสำหรับการติดตั้ง ค้นหา "wget" และทำเครื่องหมายเพื่อติดตั้งจาก "เว็บ" ในการสร้างตัวอย่างด้านล่าง เราจะต้อง "libiconv" ด้วย ค้นหาและทำเครื่องหมายเพื่อติดตั้ง

วิธีการคอมไพล์โปรแกรม Linux ภายใต้ Windows ด้วย Cygwin

คลิกถัดไป โปรแกรมติดตั้งจะเห็นว่าต้องติดตั้งแพ็คเกจอื่นใดบ้างเพื่อแก้ไขการขึ้นต่อกัน คลิกถัดไปเพื่อยอมรับคำแนะนำ

เมื่อดาวน์โหลดและติดตั้งแพ็คเกจทั้งหมดแล้ว ให้ทำตามขั้นตอนสุดท้ายจนกว่าโปรแกรมติดตั้งจะออก เริ่ม "Cygwin Terminal" เพื่อเข้าสู่สภาพแวดล้อมการพัฒนาแบบ Linux ในเทอร์มินัล คุณไม่ได้ใช้คำสั่ง Windows เช่น "dir" แต่ใช้คำสั่งเชลล์เช่น "ls"

เพื่อสาธิตวิธีการคอมไพล์โปรแกรม Linux ภายใต้ Windows เราจะใช้แพ็คเกจ HTML-XML จาก W3 ดูสิ่งที่สามารถทำได้ในวิธีจัดการไฟล์ HTML และ XML จาก Command Line

ดาวน์โหลดไฟล์ต้นฉบับโดยใช้ “wget”:

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

ไฟล์ต้นฉบับอยู่ในไดเร็กทอรี "html-xml-utils-6.7" ป้อนไดเรกทอรีนั้น:

cd html-xml-utils-6.7

ก่อนสร้างไฟล์ คุณต้องเรียกใช้เชลล์สคริปต์ "กำหนดค่า" เพื่อสร้าง Makefile (คำแนะนำในการสร้าง) ซึ่งเหมาะสำหรับสภาพแวดล้อมของบิลด์นี้ นี่เป็นขั้นตอนทั่วไปบน Linux (และ Cygwin) เมื่อสร้างแพ็คเกจจากแหล่งที่มา

./configure

วิธีการคอมไพล์โปรแกรม Linux ภายใต้ Windows ด้วย Cygwin

เมื่อ "กำหนดค่า" เสร็จสิ้น คุณสามารถเริ่มสร้างโดยใช้ "make":

make

การสร้างจะล้มเหลวระหว่างทาง สองจิตสองใจว่าจะทำอย่างไรต่อไป ฉันสามารถเปลี่ยนไปใช้โปรเจ็กต์อื่นและสร้างจากแหล่งที่มาหรือต่อสู้กับ HTML-XML-utils ฉันเลือกใช้อันหลังเพราะมันแสดงให้เห็นว่าไม่ใช่ทุกอย่างที่จะเป็นแบบวอล์กอินในสวนสาธารณะเมื่อพยายามคอมไพล์โปรแกรม Linux ภายใต้ Cygwin วิธีแก้ปัญหานี้ง่ายมาก ข้อความแสดงข้อผิดพลาดแสดงว่าตัวเชื่อมโยงไม่พบไลบรารี "iconv" การดูคำสั่งลิงก์อย่างรวดเร็วแสดงว่าไม่ได้ระบุไลบรารี วิธีแก้ปัญหาที่รวดเร็วและสกปรกคือการรันคำสั่งด้วยตนเองและบอกให้ตัวลิงก์ใช้ libconv วิธี "ที่เหมาะสม" ในการแก้ไขปัญหานี้คือเริ่มเจาะลึก Makefile เป็นต้น เพื่อค้นหาสาเหตุที่ใช้ไม่ได้

วิธีการคอมไพล์โปรแกรม Linux ภายใต้ Windows ด้วย Cygwin

รันคำสั่งต่อไปนี้โดยสังเกตว่ามี “-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” อีกครั้ง วิธี "สร้าง" ทำงานคือตรวจสอบสิ่งที่มีและยังไม่ได้สร้าง จากนั้นจึงดำเนินการสร้างต่อในจุดที่เหมาะสม เนื่องจากเราได้สร้าง “hxindex.exe” ด้วยตนเอง ดังนั้น “make” จะดำเนินการกับไบนารีถัดไปในรายการ

เมื่อ "make" เสร็จสิ้น คุณจะมีไฟล์ .exe ทั้งหมดในไดเร็กทอรี html-xml-utils-6.7

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