1. 程式人生 > >gdb和gcc升級:解決編譯和除錯時出現gdb no symbol in current context

gdb和gcc升級:解決編譯和除錯時出現gdb no symbol in current context

1 gcc 4.8安裝

步驟1:從gnu網站下載程式碼(gcc-4.8.0.tar.gz)。
步驟2:解壓程式碼
       $> tar -xzvf gcc-4.8.0.tar
       $> cd gcc-4.8.0
步驟3:編譯程式碼
       $> ./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib --build=x86_64-redhat-linux
       $> make
步驟4:安裝
       linux下安裝軟體需要以root許可權。
       $# make install
步驟5:檢查
       $> gcc -v
       入命令輸出結果含義“gcc version 4.8.0 (GCC)”,則表示gcc新版本安裝成功。

重要:
升級後需要拷貝兩個重要的檔案到對應目錄
1 libstdc++.so,用新編譯的替代舊有系統裡面的
2 libgcc_s.so,使用/usr/local/lib64下的檔案,替換掉/usr/local/lib/下的老檔案。(對ns3編譯,elf-cache的拷貝這是必須要的) 

2 gdb 7.6安裝

安裝完gcc後,些一個簡單的用例。再用gdb進行除錯時,發現出錯。錯誤資訊如,“Missing separate debuginfos use:debuginfo-install...

版本不匹配還可能出現gdb no symbol in current context。

出現錯誤的原因是,gdb版本和gcc版本不匹配。

步驟1:從gnu網站下載程式碼(gdb-7.6.tar.gz)。

步驟2:解壓程式碼
       $> tar -xzvf gdb-7.6.tar.gz
       $> cd gdb-7.6

步驟3:編譯程式碼

              $> ./configure

              $> make

              編譯過程中,有庫依賴的問題。本人編譯過程中,缺少庫ncurses。安裝庫 ncurses-5.9.tar.gz,安裝過程不詳細描述,過程和其他軟體包類似。

步驟4:安裝
       linux下安裝軟體需要以root許可權。
       $# make install
步驟5:檢查
       $> gdb -v
       入命令輸出結果含義“GNU gdb (GDB) 7.6”,則表示gdb新版本安裝成功。

安裝成功後,就可以編譯和除錯用C++ 0x11標準寫的程式碼了。

編譯程式碼時,需要帶引數std=c++11:

如:g++ test.cc std=c++11。


參考

http://blog.csdn.net/kedacom_com/article/details/8917800