Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

เหตุใดลำดับที่เชื่อมโยงไลบรารีในบางครั้งจึงทำให้เกิดข้อผิดพลาดใน GCC


โดยทั่วไป ข้อผิดพลาดประเภทนี้มีต้นกำเนิดมาจากตัวเชื่อมโยงในขั้นตอนการคอมไพล์ พฤติกรรมเริ่มต้นของลิงเกอร์คือการนำโค้ดจากไลบรารีที่เก็บถาวรเมื่อโปรแกรมปัจจุบันต้องการ

เพื่อให้ทำงานได้อย่างถูกต้อง ห้องสมุดจะต้องอยู่ในลำดับ เรียกได้ว่าต้องอยู่ในรูปแบบ “caller before callees” ปัญหานี้สามารถแก้ไขได้โดยการเลือกพฤติกรรมที่ไม่ใช่ค่าเริ่มต้นโดยใช้แฟล็ก แต่ในกระบวนการนี้ การลิงก์อาจใช้เวลานานขึ้น มิฉะนั้นจะสามารถแก้ไขได้โดยการสั่งซื้อห้องสมุดอย่างถูกต้อง รถตักและรถตักสองตัวนี้สามารถช่วยในการจัดเรียงและแก้ไขลำดับได้