GCC 編譯錯誤 relocation truncated to fit: R_X86_64_32S against `.bss'


    問題如下圖所示:(.text+0x53a): relocation truncated to fit: R_X86_64_32S against `.bss'

 

    以前在Linux中編譯程序,從來沒有遇到過這種問題,今天第一次遇到。查了一些資料發現時內存的限制,自己還有些疑問,以前編譯內存大小是4G的程序都沒出現過這種錯誤。

      看到一些博文中說是內存超過2G會出現問題。需要添加編譯選項:-mcmodel

調整編譯時的對靜態數組要求的大小:-mcmodel=medium(中級)  -mcmodel=large(高級)

 具體編譯選項添加位置:

       gcc -mcmodel=medium -o  stream2g_10  stream.c

或者在makefile文件中對應位置添加即可。



        找了以前編譯的命令 gcc -O stream.c -o stream  就順利通過了,-O這個優化參數也好神奇。

        

 

       但是-O失效的時候,還是-mcmodel 比較實用,當單個數組大小為2G,這個代碼占用內存6G時,-O已經解決不了問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM