『壹』 用不同版本GCC編譯出的庫只能用對應的GCC使用嗎
不同版本的動態庫是為了升級方便,舊的程序需要與舊的庫鏈接,新的程序與新的.
一般的做法是把libabc.so連接(symbolic link, ln -s libabc.so.N libabc.so)到最新的版本,這樣以後的新程序,在用gcc -labc的時候,都會鏈接到新的版本.舊的已經鏈接好的程序並不會產生不兼容的問題,因為舊程序在過去已經鏈接過了(動態庫鏈接的信息可以用ldd來查看: ldd /bin/ls).
symbolic link, ln是推薦的維護版本的辦法,不建議更改文件名.
如果你要有一個方便的辦法鏈接舊的版本, 建一個舊的版本的symbolic link就可以了,libabc11.so
ln -s libabc.so.11 libabc11.so
gcc -labc11...
『貳』 gcc 能編譯 c++ 嗎
可以,GCC包括很多的組件,可以便宜各種源代碼程序。編譯C++代碼時使用g++就可以,格式:g++ ***.cpp -o ***
『叄』 gcc 編譯帶調試信息會影響性能嗎
gcc編譯加-d加入調試信息,會盡可能載入所有庫的符號表,調用函數會盡可能調用debug模式(如果有),去掉所有編譯優化,所以肯定是有點影響性能的
『肆』 編譯環境與生產環境gcc版本不一致是否會有問題
有一些abi兼容性問題,如果你的程序有靜態或動態鏈接不全支持c++11的libc的話。
如果你的程序完全是用gcc 4.84編譯鏈接出來,也沒有動態鏈接低版本的libc的話應該沒有問題
『伍』 升級gcc,會不會影響其它軟體
在 linux 系統下,升級 C 語言編譯器 gcc,不會影響其他的應用軟體。
『陸』 裝了兩個版本的GCC,怎麼規定用哪一個
如果你的兩個版本的 gcc C 編譯器是安裝在不同的路徑下的話,那麼就很好辦:你可以在環境設置文件中修改 PATH 環境變數:假設:環境設置文件的文件名為:my_environment,gcc version 1 是安裝在 /usr/sbin1 下的話,gcc version 2 是安裝在 /usr/sbin2 下的話,那麼你就可以編輯 my_environment 文件,並修改其中的 PATH 變數。
例如:PATH = /usr/sbin2 ; /usr/sbin1,/usr/sbin1 在 /usr/sbin2 之後。這樣的話,系統就會自動調用 /usr/sbin2 下的 gcc 編譯程序。如果想使用 gcc version1版本的編譯程序,則再次修改該變數即可。
『柒』 已經安裝GCC 卻不能編譯
找不到hello.c的目錄,你在shell裡面進去的那個目錄不是hello.c在的哪個目錄,先進shell,然後再進hello.c在的那個目錄,然後再執行你執行的那個命令看看
『捌』 用高版本編譯低版本gcc的問題
據說要低版本的才能編譯高版本的
『玖』 gcc可以編譯c++嗎
狹義的gcc指的是gcc這個可執行文件,它是linux上的標准c語言編譯器,是不可以編譯c++的。
廣義的gcc是指linux編譯工具,安裝gcc的時候,都會有g++的可執行文件同時被安裝。
所以從這個角度上gcc可以編譯c++,不過編譯命令需要選g++。
可以在shell下打
g++ --version
如果可以正確顯示版本信息,而不是無法找到命令,那麼就是可以編譯c++的。