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

4
ฉันจะเชื่อมโยงไปยังเวอร์ชัน glibc เฉพาะได้อย่างไร
เมื่อฉันรวบรวมบางสิ่งบนพีซี Ubuntu Lucid 10.04 ของฉันมันจะเชื่อมโยงกับ glibc Lucid ใช้ glibc 2.11 เมื่อฉันเรียกใช้ไบนารีนี้บนพีซีเครื่องอื่นที่มี glibc รุ่นเก่าคำสั่งล้มเหลวโดยบอกว่าไม่มี glibc 2.11 ... เท่าที่ฉันรู้ glibc ใช้การกำหนดเวอร์ชันสัญลักษณ์ ฉันบังคับให้ gcc เชื่อมโยงกับเวอร์ชันสัญลักษณ์เฉพาะได้หรือไม่ ในการใช้งานจริงของฉันฉันพยายามรวบรวม gcc cross toolchain สำหรับ ARM
111 linux  gcc  linker  glibc  libc 

5
ตัวเลขจุดลอยตัวแบบแข็งและแบบอ่อนต่างกันอย่างไร
เมื่อฉันคอมไพล์โค้ด C ด้วย cross toolchain ตัวเชื่อมโยงจะพิมพ์หน้าคำเตือนโดยบอกว่าไฟล์ปฏิบัติการของฉันใช้ฮาร์ดโฟล แต่ libc ของฉันใช้ซอฟต์โฟล อะไรคือความแตกต่าง?
99 c  linux  floating-point  arm  libc 

7
อะไรคือเหตุผลสำหรับ fread / fwrite ที่มีขนาดและนับเป็นอาร์กิวเมนต์?
เราได้พูดคุยกันในที่ทำงานเกี่ยวกับสาเหตุที่ fread และ fwrite ใช้ขนาดต่อสมาชิกและนับและส่งคืนจำนวนสมาชิกที่อ่าน / เขียนแทนที่จะใช้แค่บัฟเฟอร์และขนาด การใช้งานเพียงอย่างเดียวที่เราสามารถทำได้คือถ้าคุณต้องการอ่าน / เขียนอาร์เรย์ของโครงสร้างที่ไม่สามารถหารด้วยการจัดตำแหน่งแพลตฟอร์มได้อย่างเท่าเทียมกันและด้วยเหตุนี้จึงได้รับการบุนวม แต่ไม่สามารถใช้ร่วมกันได้เพื่อรับประกันตัวเลือกนี้ ในการออกแบบ จากFREAD (3) : ฟังก์ชั่น fread () อ่านองค์ประกอบ nmemb ของข้อมูลแต่ละขนาดไบต์ยาวจากสตรีมที่ชี้ไปที่สตรีมจัดเก็บไว้ในตำแหน่งที่กำหนดโดย ptr ฟังก์ชัน fwrite () เขียนองค์ประกอบ nmemb ของข้อมูลแต่ละขนาดไบต์ยาวไปยังสตรีมที่สตรีมชี้ไปโดยรับข้อมูลจากตำแหน่งที่กำหนดโดย ptr fread () และ fwrite () ส่งคืนจำนวนรายการที่อ่านหรือเขียนสำเร็จ (กล่าวคือไม่ใช่จำนวนอักขระ) หากข้อผิดพลาดเกิดขึ้นหรือถึงจุดสิ้นสุดของไฟล์ค่าที่ส่งคืนจะเป็นการนับรายการสั้น ๆ (หรือศูนย์)
96 c  libc 

4
ประเภทเช่น uint32, int32, uint64, int64 ถูกกำหนดไว้ในส่วนหัวของ stdlib หรือไม่
ฉันมักจะเห็นซอร์สโค้ดโดยใช้ประเภทเช่น uint32, uint64 และฉันสงสัยว่าควรกำหนดโดยโปรแกรมเมอร์ในรหัสแอปพลิเคชันหรือหากกำหนดไว้ในส่วนหัว lib มาตรฐาน อะไรคือวิธีที่ดีที่สุดในการมีประเภทเหล่านี้ในซอร์สโค้ดแอปพลิเคชันของฉัน
95 c  libc 

1
เหตุใดที่อยู่ของ __libc_start_main จึงเหมือนกันภายใน GDB แม้ว่า ASLR จะเปิดอยู่
Breakpoint 1, 0x00007ffff7de8060 in __libc_start_main () from /usr/lib/libc.so.6 (gdb) r The program being debugged has been started already. Start it from the beginning? (y or n) y Starting program: /home/firstlove/projects/org-ioslide/example/a.out Breakpoint 1, 0x00007ffff7de8060 in __libc_start_main () from /usr/lib/libc.so.6 (gdb) r The program being debugged has been started already. Start it …
16 c  linux  gdb  libc  aslr 

5
ไม่มีการระบุเหตุการณ์ที่ไม่ได้ระบุ
ฉันกำลังดูไฟล์สำหรับการเปลี่ยนแปลงโดยใช้ inotify เหตุการณ์ (มันเกิดขึ้นจาก Python โทรเข้า libc) สำหรับไฟล์บางช่วงgit cloneผมเห็นบางสิ่งบางอย่างที่แปลก: ผมเห็นIN_CREATEเหตุการณ์และฉันเห็นทางlsว่าไฟล์มีเนื้อหา แต่ผมไม่เคยเห็นหรือIN_MODIFY IN_CLOSE_WRITEนี่เป็นสาเหตุให้ฉันมีปัญหาเนื่องจากฉันต้องการตอบกลับIN_CLOSE_WRITEในไฟล์: โดยเฉพาะเพื่อเริ่มต้นการอัปโหลดเนื้อหาไฟล์ แฟ้มที่มีพฤติกรรมผิดปกติอยู่ใน.git/objects/packไดเรกทอรีและพวกเขาสิ้นสุดในหรือ.pack .idxไฟล์อื่น ๆ ที่คอมไพล์สร้างมีเชนมากกว่าปกติIN_CREATE-> IN_MODIFY-> IN_CLOSE_WRITE(ฉันไม่ได้ดูIN_OPENเหตุการณ์) นี่คือ Docker บน MacOS แต่ฉันได้เห็นหลักฐานของ Docker บน Linux ในระบบรีโมตแล้วดังนั้นความสงสัยของฉันคือ MacOS นั้นไม่เกี่ยวข้องกัน ฉันเห็นสิ่งนี้หากกำลังดูและgit cloneอยู่ในคอนเทนเนอร์นักเทียบท่าเดียวกัน คำถามของฉัน: เหตุใดเหตุการณ์เหล่านี้จึงหายไปในไฟล์เหล่านี้ สิ่งที่สามารถทำได้เกี่ยวกับมันได้หรือไม่ โดยเฉพาะฉันจะตอบสนองต่อความสมบูรณ์ของการเขียนไฟล์เหล่านี้ได้อย่างไร? หมายเหตุ: นึกคิดฉันต้องการตอบสนองเมื่อการเขียนเป็น "เสร็จสิ้น" เพื่อหลีกเลี่ยงความจำเป็น / (ไม่ถูกต้อง) การอัปโหลดการเขียน "ยังไม่เสร็จ" แก้ไข: การอ่านhttps://developer.ibm.com/tutorials/l-inotify/ดูเหมือนว่าสิ่งที่ฉันเห็นมีความสอดคล้องกับ ไฟล์ชั่วคราวแยกต่างหากที่มีชื่อเหมือนtmp_pack_hBV4Alzกำลังสร้างแก้ไขและปิด สร้างฮาร์ดลิงก์ไปยังไฟล์นี้โดยใช้.packชื่อสุดท้าย tmp_pack_hBV4Alzชื่อเดิมจะถูกลบ ฉันคิดว่าปัญหาของฉันซึ่งพยายามใช้ …
11 linux  git  docker  libc  inotify 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.