ฉันจะเปลี่ยนไดเรกทอรีการค้นหาเริ่มต้นของ GCC สำหรับ crti.o ได้อย่างไร

ฉันต้องการระบุไดเรกทอรีการค้นหาของ GCC สำหรับ startfile และ endfile: crt1.o, crti.o และ crtn.o การส่ง -B บนบรรทัดคำสั่งไปยังไดรเวอร์ GCC ใช้งานได้ แต่ไม่สะดวก ฉันจะแก้ไขไฟล์ข้อมูลจำเพาะ (lib/gcc/x86_64-unknown-linux-gnu/4.9.2/specs) เพื่อระบุพาธการค้นหาสำหรับ startfile ได้อย่างไร

ฉันลองเพิ่มตัวเลือก -B ไปยังข้อมูลจำเพาะ startfile และได้รับข้อผิดพลาด: ld: unrecognized option '-B/gsc/btl/linuxbrew/lib'

จากนั้น ฉันลองเพิ่มตัวเลือก -B ไปยังข้อมูลจำเพาะ cc1 และได้รับข้อผิดพลาด: cc1: error: command line option '-B/gsc/btl/linuxbrew/lib' is valid for the driver but not for C

หากไม่สามารถทำได้ผ่านไฟล์ specs มีตัวแปรสภาพแวดล้อมหรือตัวเลือกการกำหนดค่าให้กับ GCC ที่บรรลุเป้าหมายเดียวกันหรือไม่

ฉันได้ติดตั้ง glibc เวอร์ชันล่าสุดในโฮมไดเร็กตอรี่ของฉันแล้ว ทุกอย่างทำงานได้ดีมาก ฉันได้แก้ไขไฟล์ specs เพื่อเชื่อมโยงกับเวอร์ชันใหม่ของ glibc แต่ยังคงเชื่อมโยงกับเวอร์ชันระบบเก่าใน /usr ของ startfile และ endfile

นี่คือคำถามที่ยังไม่มีคำตอบในรายชื่ออีเมล gcc-help นี่คือข้อบกพร่องของ Linuxbrew ที่เกี่ยวข้อง gfortran ใช้งานไม่ได้กับ Linuxbrew แบบสแตนด์อโลน และการแก้ไขที่เสนอ gcc, binutils: ลิงก์ไปยัง Cellar แทนที่จะเป็น libs ระบบ

ขอบคุณ
ฌอน


person Shaun Jackman    schedule 06.03.2015    source แหล่งที่มา


คำตอบ (2)


คุณสามารถใช้เส้นทางสัมบูรณ์ในส่วน *startfile: และ *endfile: ในไฟล์ข้อมูลจำเพาะ แทนเส้นทางสัมพัทธ์เริ่มต้น การดำเนินการนี้จะแทนที่การเลือกตำแหน่งเริ่มต้นของ GCC

person Florian Weimer    schedule 09.02.2019

ตาม https://wiki.debian.org/Multiarch/LibraryPathOverview gcc จะค้นหา ไฟล์เริ่มต้นเช่น crt1.o ใน $(sysroot)/lib ดังนั้นคุณจึงสามารถระบุตัวเลือก --sysroot เมื่อเรียกใช้ gcc หรือคอมไพล์ gcc ด้วย --with-sysroot

person Michael    schedule 15.11.2018
comment
น่าเสียดายที่เมื่อฉันลอง --sysroot ด้วย glibc ที่สร้างขึ้นเอง มันล้มเหลวโดยมีข้อผิดพลาดอื่น: cannot find libgcc_s.so.1 และดูเหมือนว่าจะยังคงใช้โฮสต์: stackoverflow.com/questions /10412684/ - person Ciro Santilli 新疆再教育营六四事件ۍ 25.03.2021