ฉันต้องการปรับขนาดของไฟล์ปฏิบัติการของฉันให้เหมาะสมอย่างรุนแรง ( ARM
การพัฒนา) และฉันสังเกตเห็นว่าในรูปแบบการสร้างปัจจุบัน ( gcc
+ ld
) สัญลักษณ์ที่ไม่ได้ใช้ของฉันจะไม่ถูกตัดออก
การใช้งานของarm-strip --strip-unneeded
สำหรับที่เกิด executables / ห้องสมุดไม่เปลี่ยนขนาดการส่งออกของปฏิบัติการที่(ผมมีความคิดว่าทำไมไม่มีบางทีมันก็ไม่ได้)
จะเป็นอย่างไร(ถ้ามี)ในการแก้ไขไปป์ไลน์อาคารของฉันเพื่อให้สัญลักษณ์ที่ไม่ได้ใช้ถูกดึงออกจากไฟล์ผลลัพธ์
ฉันจะไม่นึกถึงสิ่งนี้ด้วยซ้ำ แต่สภาพแวดล้อมที่ฝังอยู่ในปัจจุบันของฉันไม่ได้ "ทรงพลัง" มากนักและประหยัดได้แม้จะ500K
ไม่ได้2M
ผลลัพธ์ในการเพิ่มประสิทธิภาพการโหลดที่ดีมาก
อัปเดต:
น่าเสียดายที่gcc
เวอร์ชันปัจจุบันที่ฉันใช้ไม่มี-dead-strip
ตัวเลือกและ-ffunction-sections... + --gc-sections
สำหรับld
ไม่ได้ให้ความแตกต่างอย่างมีนัยสำคัญสำหรับผลลัพธ์ที่ได้
ฉันตกใจมากที่เรื่องนี้กลายเป็นปัญหาเพราะฉันแน่ใจว่าgcc + ld
ควรดึงสัญลักษณ์ที่ไม่ได้ใช้ออกโดยอัตโนมัติ (ทำไมพวกเขาถึงต้องเก็บไว้?)
boost
ไลบรารี.exe
ไฟล์ผลลัพธ์จะมีไฟล์อ็อบเจ็กต์ที่ไม่ได้ใช้จำนวนมากและเนื่องจากข้อกำหนดของรันไทม์ที่ฝังอยู่ในปัจจุบันของฉัน การเริ่มต้น10mb
แอปพลิเคชันจะใช้เวลานานกว่าตัวอย่างเช่นการเริ่มต้น500k
แอปพลิเคชัน