gcc4.8.1交叉編譯C++程式,生成的PowerPC的檔案中,會有特別多的類似.data._ZNSt17_timepunct_cacheIcE12_S_timezonesE段,還有類似.bss._ZZN9_gnu_cxx27_verbose_terminate_handlerEvE11terminating段,
而使用gcc3.4.4編譯出來的程式,則只有一個.data段或.bss段,而不是很多以.data開頭或.bss開頭的段。
現在發現的問題是連接腳本中只使用*.bss,會丟失其它bss段,必須用*.bss.*才行。
請問各位專家:
1)gcc4.8.1和gcc3.4.4在生成段方面有什么區別?
2)連接腳本如果只使用*.text,會不會丟失一些text資訊? 連接腳本是否必須用*.text.* ?
uj5u.com熱心網友回復:
沒啥差別吧, 編譯選項加上 -ffunction-sections -fdata-sections 就給每個函式單獨命名 text, data, bss 段名, 方便鏈接腳本精細控制 ...uj5u.com熱心網友回復:
GCC4.8.1編譯C程式沒有這種現象。現在沒有加這兩個選項,在編譯C++的時候還是會生成很多獨立的段,甚至bss段都有很多,這是和C++有關系嗎?
現在的問題是,平時用的連接腳本一般用*.text、*.data、*.bss,而不是用*.text.*、*.data.*、*.bss.*,那么會不會丟失很多資訊?
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/31139.html
標籤:應用程序開發區
上一篇:Linux系統怎么連接無線網路
下一篇:編譯DS-SLAM遇到的問題
