คำถามติดแท็ก glibc

glibc คือการใช้ไลบรารี Standard C ของ GNU

1
การใช้ libc สำรองกับ ld-linux.so hacks; วิธีทำความสะอาด?
ฉันมีระบบดั้งเดิมที่มี glibc ที่เก่ามากซึ่งเราไม่สามารถอัพเกรดได้โดยไม่ต้องมีการทดสอบ / ตรวจสอบความถูกต้อง ฉันจำเป็นต้องเรียกใช้โปรแกรมใหม่ (เช่น Java 1.7) บนระบบนั้นหลายครั้งแล้ว ฉันเลือกโซลูชัน chroot ที่ฉันจัดเก็บ libs ที่จำเป็นทั้งหมดและเรียกใช้บริการใน chroot แม้ว่า chroot จะมีข้อ จำกัด มากและฉันอยากจะลองแก้ปัญหาด้วย LD_LIBRARY_PATH น่าเสียดายที่ฉันได้รับข้อผิดพลาดlibc.so.6: cannot handle TLS dataเมื่อฉันลองทำ ปรากฎว่าฉันต้องการ/lib/ld-linux.so.2จาก chroot เช่นกัน งานนี้: LD_LIBRARY_PATH=/home/chroot/lib /home/chroot/lib/ld-linux.so.2 /home/chroot/bin/program อย่างไรก็ตามjavaเกียดเคล็ดลับของฉันโดยการตรวจสอบ/proc/self/cmdlineเพื่อกำหนดที่จะโหลดห้องสมุดจากซึ่งล้มเหลวหากไบนารีไม่ได้ชื่อว่า 'bin / java' นอกจากนี้ java เรียกใช้ตัวเองในระหว่างการเริ่มต้นปัญหาที่ซับซ้อนมากขึ้น ในความพยายามครั้งสุดท้ายที่จะทำให้งานนี้ฉันเปิดไบนารี Java ด้วยโปรแกรมแก้ไขฐานสิบหกและแทนที่สตริง/lib/ld-linux.so.2ด้วย/home/chroot/ld.so(และทำให้ symlink เป็นld-linux.so.2) และทำงานได้! แต่ฉันคิดว่าทุกคนจะเห็นด้วยว่ามันเป็นกระบองขนาดใหญ่ที่จะเขียนเส้นทางของไบนารีใหม่ทุกตัวไปยังเส้นทางที่แน่นอนของระบบซ้อน ไม่มีใครรู้วิธีที่สะอาดกว่าการใช้เส้นทางไลบรารีที่กำหนดเองรวมถึง ld-linux.so …

2
วิธีการทำให้ linux 'perf record' ทำงานสำหรับสัญลักษณ์ libc และ libstdc ++?
ฉันใช้perf record -gx86-64 Linux เพื่อทำโปรไฟล์โปรแกรม สัญลักษณ์หลายอย่างใน libc หรือ libstdc ++ มี0เป็นพาเรนต์: __GI___strcmp_ssse3(libc) และstrcmp@plt(libstdc ++) เช่น (จริง ๆ แล้วฉันสามารถทำลายสัญลักษณ์เหล่านี้ในดีบักเกอร์และรับ backtrace) ฉันชอบที่จะรู้ว่าผู้โทรหลักของฟังก์ชั่นเหล่านี้คืออะไรและทำไมจึงไม่ถูกบันทึก เป็นเพราะ libc และ libstdc ++ ไม่มีตัวชี้เฟรมบน x86_64 หรือไม่? และในทางปฏิบัติมากกว่านี้มีวิธีแก้ไขไหม?
12 glibc  profiling  perf 

2
SIGINFO บน GNU Linux (Arch Linux) หายไป
ฉันกำลังพัฒนาแอปพลิเคชันและฉันต้องการพิมพ์สถิติรันไทม์บางส่วนไปยังคอนโซลตามต้องการ killและสัญญาณมาถึงใจของฉันทันที การอ่านสัญญาณ Unixบน Wiki SIGINFOดูเหมือนจะเป็นไปได้เพราะ: มันมีไว้สำหรับวัตถุประสงค์เหล่านี้ ไม่ยุติกระบวนการหากไม่มีการใช้งานตัวจัดการสัญญาณ (ตรงกันข้ามกับSIGUSRx- ดูที่นี่ ) อย่างไรก็ตามโดยการตรวจสอบผลลัพธ์ของkill -lดูเหมือนว่าเซิร์ฟเวอร์ของฉันไม่ได้ใช้สัญญาณนี้ คำถามของฉันคือ: ทำไมSIGINFOระบบของฉันถึงหายไป มันหายไปกับระบบ GNU Linux ทั้งหมดหรือไม่? มีวิธีง่าย ๆ (เช่นไม่มีเคอร์เนล / glibc recompilation) เพื่อเปิดใช้งานสัญญาณนี้หรือไม่? ถ้าไม่มีสิ่งใดจะเป็นวิธีที่ยาก? ฉันสามารถใช้สัญญาณทางเลือกใดเพื่อจุดประสงค์ของฉันที่จะไม่ทำให้เกิดผลข้างเคียงใด ๆหากไม่ได้รับการจัดการโดยกระบวนการเป้าหมาย (ฉันไม่คิดเลยเพราะฉันไม่สามารถหาสัญญาณอื่นที่เหมาะสมในคู่มือของglibc ) Linux metainfo: Linux whatever 3.18.2-2-ARCH #1 SMP PREEMPT Fri Jan 9 07:37:51 CET 2015 x86_64 GNU/Linux อัปเดต:ฉันยังคงค้นหาข้อมูลเพิ่มเติมว่าทำไมสัญญาณนี้จึงถูกแยกแบบมีเงื่อนไขจากระบบอื่นที่ไม่ใช่ BSD (ดูความคิดเห็นด้านล่าง) …
12 linux  signals  glibc 

2
ไม่มีข้อผิดพลาดของไลบรารีการพัฒนา 32 หลังจากติดตั้ง glibc-devel.i686
ฉันพยายามติดตั้ง gcc 4.9.0 บน centOS 6 ในระหว่างที่./configureมีข้อผิดพลาดเกิดขึ้น: /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-redhat-linux/4.4.7/libgcc_s.so when searching for -lgcc_s /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-redhat- linux/4.4.7/libgcc_s.so when searching for -lgcc_s /usr/bin/ld: cannot find -lgcc_s collect2: ld returned 1 exit status configure: error: I suspect your system does not have 32-bit developement libraries (libc and headers). If …
11 centos  gcc  glibc 

1
อะไรคือผลลัพธ์ของ“ getent ahosts”
ฟิลด์ที่พิมพ์โดยมีgetent ahosts DOMAINอะไรบ้าง เอาต์พุตสำหรับgetent hostsการรวมกันอย่างง่าย ๆ ของ IP และชื่อโฮสต์ getent ahostsมีสนามที่สามเพิ่มเติมนั่นคือในทุกการทดสอบของฉันอย่างใดอย่างหนึ่งSTREAM, หรือDGRAMRAW ผลผลิตสำหรับ getent hosts example.net 2001:500:88:200::10 example.net และสำหรับ getent ahosts example.net 2001:500:88:200::10 STREAM example.net 2001:500:88:200::10 DGRAM 2001:500:88:200::10 RAW 192.0.43.10 STREAM 192.0.43.10 DGRAM 192.0.43.10 RAW
10 networking  glibc 

2
เป็นไปได้ไหมที่จะคอมไพล์และ bootstrap GNU?
Guix รุ่นใหม่ออกมาเมื่อไม่นานมานี้ และฉันก็มีความคิดว่าถ้าฉันสามารถ bootstrap glibc, gcc และ guix ไปยัง HURD และ Mach ฉันสามารถมีระบบ GNU ที่ไม่ใช่ Linux ได้ แต่ฉันต้องการซอฟต์แวร์บางอย่างเช่น bash, emacs, binutils, coreutils, ระบบ init มีผู้ใดบ้างที่มีการเรียกของระบบใด ๆ ฉันจะสามารถทำได้เหมือนใน LFS หรือไม่?
9 gcc  glibc  hurd 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.