การทำความเข้าใจว่า gcc
บน Solaris ค้นพบไลบรารีของมันได้อย่างไร
เมื่อทำงานกับ gcc
บน Solaris ผู้ใช้จำนวนมากเผชิญกับความท้าทายในการทำให้คอมไพเลอร์ค้นพบไลบรารีและเฮดเดอร์ที่จำเป็นซึ่งโครงการของพวกเขาขึ้นอยู่กับ ภาพการสั่งซื้อนี้อาจรู้สึกหงุดหงิดเป็นพิเศษ โดยเฉพาะเมื่อคุณพยายามติดตั้งไลบรารีที่ขึ้นอยู่กับไลบรารีอื่น เช่น ffmpeg
ในบล็อกโพสต์นี้ เราจะสำรวจว่า gcc
ค้นพบไลบรารีของมันบน Solaris ได้อย่างไรและให้ขั้นตอนที่จำเป็นในการปรับแต่งเส้นทางการค้นหาอย่างถูกต้อง
ปัญหา
คิดว่าคุณกำลังพยายามสร้างไลบรารีที่ชื่อว่า quadrupel ซึ่งขึ้นอยู่กับ ffmpeg
คุณได้สร้าง ffmpeg
สำเร็จแล้ว และไลบรารีของมันถูกติดตั้งใน /opt/gnu/lib
โดยมีไฟล์เฮดเดอร์รวมอยู่ใน /opt/gnu/include
อย่างไรก็ตาม เมื่อพยายามสร้าง quadrupel
คุณพบข้อผิดพลาดที่ระบุว่าคอมไพเลอร์ไม่สามารถค้นหาเฮดเดอร์ของ ffmpeg
ได้ สถานการณ์นี้เน้นถึงความจำเป็นในการกำหนดค่าคอมไพเลอร์ให้สามารถระบุไลบรารีและไฟล์ที่รวมได้อย่างถูกต้อง
ทางออก
โชคดีที่มีขั้นตอนง่ายๆ ที่คุณสามารถทำได้เพื่อลงโทษปัญหานี้ วิธีการหลักคือการปรับเส้นทางไลบรารีและไฟล์ที่รวมเพื่อให้ gcc
สามารถรับรู้ในระหว่างการคอมไพล์ นี่คือวิธีการทำ:
การตั้งค่าเส้นทางไลบรารี
- ใช้ตัวแปรสภาพแวดล้อม
LD_LIBRARY_PATH
- หนึ่งในวิธีที่ให้
gcc
รู้ว่าควรค้นหาไลบรารีที่ไหนคือการตั้งค่าตัวแปรสภาพแวดล้อมLD_LIBRARY_PATH
แม้ว่าวิธีนี้จะมีประสิทธิภาพ แต่จะมีผลเฉพาะสำหรับเซสชันของผู้ใช้ในปัจจุบัน
- หนึ่งในวิธีที่ให้
- การปรับเปลี่ยนถาวรด้วย
crle
- เพื่อหลีกเลี่ยงการเปลี่ยนแปลงการตั้งค่าสำหรับผู้ใช้แต่ละคน มีวิธีแก้ปัญหาที่ถาวรมากขึ้นในการปรับเส้นทางระบบ คุณสามารถทำได้โดยใช้คำสั่ง
crle
(การกำหนดค่าลิงเกอร์ระหว่างการทำงาน) - นี่คือคำสั่ง:
crle -l -c /var/ld/ld.config -l /usr/lib:/usr/local/lib:/opt/gnu/lib
- คำสั่งนี้บอก Solaris ให้รวมไดเรกทอรีที่ระบุ (
/usr/lib
,/usr/local/lib
, และ/opt/gnu/lib
) สำหรับการค้นหาไลบรารีตลอดเวลา
- เพื่อหลีกเลี่ยงการเปลี่ยนแปลงการตั้งค่าสำหรับผู้ใช้แต่ละคน มีวิธีแก้ปัญหาที่ถาวรมากขึ้นในการปรับเส้นทางระบบ คุณสามารถทำได้โดยใช้คำสั่ง
การตั้งค่าเส้นทางไฟล์ที่รวม
เพื่อให้แน่ใจว่าคอมไพเลอร์ gcc
ของคุณสามารถค้นหาไฟล์เฮดเดอร์ที่จำเป็นได้ คุณต้องปรับตัวแปร CFLAGS
:
- แก้ไข CFLAGS สำหรับการรวม
- เมื่อคอมไพล์โค้ดของคุณ ให้รวมเส้นทางไปยังไฟล์เฮดเดอร์ของคุณโดยใช้ธง
-I
- นี่คือวิธีการเพิ่ม:
export CFLAGS="-I/opt/gnu/include"
- คำสั่งนี้จะอัปเดตตัวแปร
CFLAGS
เพื่อให้gcc
ระบุไฟล์ที่รวมในไดเรกทอรี/opt/gnu/include
ได้อย่างถูกต้อง
- เมื่อคอมไพล์โค้ดของคุณ ให้รวมเส้นทางไปยังไฟล์เฮดเดอร์ของคุณโดยใช้ธง
สรุป
การกำหนดค่า gcc
บน Solaris ให้สามารถค้นพบไลบรารีและไฟล์เฮดเดอร์ได้อย่างมีประสิทธิภาพเป็นสิ่งสำคัญสำหรับการคอมไพล์และติดตั้งไลบรารีที่พึ่งพาอย่างเช่น quadrupel
โดยการปรับเปลี่ยนทั้งเส้นทางไลบรารีด้วย crle
และการตั้งค่า CFLAGS
สำหรับไฟล์ที่รวม คุณสามารถรับรองได้ว่ากระบวนการสร้างของคุณดำเนินไปอย่างราบรื่นโดยไม่พบข้อผิดพลาดที่ไม่จำเป็น
การใช้เวลาในการตั้งค่าเส้นทางเหล่านี้ให้ถูกต้องไม่เพียงแต่จะช่วยในการตั้งค่าในปัจจุบันของคุณเท่านั้น แต่ยังช่วยทำให้โครงการและการสร้างในอนาคตง่ายขึ้นอีกด้วย โชคดีในการเขียนโค้ด!