① 能解釋下編譯失敗的原因嗎
編譯失敗的原因有很多種。其中主要有以下一些類型:
(1)、用戶編寫的源程序中有語法錯誤。例如:未定義某一個變數就進行引用。這一類錯誤是最簡單的,也是編譯器最容易檢查出來的,所以會產生對源程序的編譯失敗;
(2)、用戶編寫的源程序中有未對變數進行初始化就進行引用,也會導致程序運行錯誤。例如:用戶雖然定義了一個指向某一個內存地址的指針變數,但是在使用前卻未對它進行初始化,並進行任何判斷,就往該指針指向的內存地址賦予了一個數值,這種情況在語法上編譯器是檢查不出來的,但是程序一旦運行起來,肯定就會出現錯誤了。在 WINDOWS 系統下一般是:指向XXXX的內存不能夠為 Read (或者為 Write),要是在 UNIX/linux 系統下就會發生 Core Dumped。
(3)、數組越界。這類錯誤也是編譯器檢查不出來的,但是一旦程序運行起來,程序的運行結果可能就是一個隨機的結果。而不是用戶需要得到的結果。
所以從編譯的實質上說,以上情況都應該屬於編譯失敗的類型。因為編譯器並無法阻止這些錯誤的發生,而是讓程序在運行時發生了各種各樣的意想不到的運行結果。
② 為什麼在Linux中strlwr()不能編譯通過,已經查看過<string.h>,的確在頭文件中沒有
strlwr和strupr都不是標準的C庫函數!有些編譯器不支持很正常,編譯器不支持的,只能自己定義這兩個函數並且用代碼自己去實現它。
個人使用過VC++2010,是可以編譯通過的,證明VC++2010里邊的編譯器支持這兩個函數。
而linux中的GCC編譯器則編譯不通過,證明linux下的GCC編譯器不支持這兩個函數。
③ 同樣的代碼,windows下vs2010可以正常運行,linux下為何會不能編譯要怎麼修改
equence 似乎是抄寫錯誤!!!
main.cpp:90:25: 錯誤: 在嵌套模板實參列表中應當使用『> >』而非『>>』
先把這個錯誤改掉,就好定位錯誤了!!
extern vector<vector<Sequence> > FS;//Frequent Sequences
vector<vector<Sequence> > FS(W);
改成:
extern vector<vector<Sequence> > FS;//Frequent Sequences
vector<vector<Sequence> > FS(W);
④ 有誰比我悲催,在linux下編譯個gcc編譯了兩個月都沒成功
沒弄成是你不誠心弄,跟著我說的方法做
1.下載鏡像例如:redhat-rhel-server-6.8-x86_64-dvd.iso
2.在虛擬機上安裝環境
3.因為紅帽的系統什麼都沒裝,所以要自己安裝編譯工具gcc
gcc需要的包都在下面放呢,不要用下面的版本,每個系統不一樣
4.下圖中gcc所有rpm安裝包的由來
【在尋找gcc安裝包的過程時我是先搜所需依賴,後來直接下載怎麼裝都裝不上
,主要原因就是版本和安裝順序不對,安裝順序從教程和報錯中尋找,】
我安裝的鏡像是redhat-rhel-server-6.8-x86_64-dvd.iso用WinRAR打開鏡像
redhat-rhel-server-6.8-x86_64-dvd.isoPackages這個目錄下面看看,
看到了什麼,這個是所有和系統適配的rpm安裝包,找gcc-****包名字,
解壓出來,然後安裝,安裝或報錯,看著報錯缺失的是哪個依賴包,然後去鏡像
壓縮包裡面尋找,版本保證一致。
5.為了不出現其他錯誤,盡量重裝一邊,保證系統干凈。懂不?
gcc需要的包名 版本 redhat-rhel-server-6.8-x86_64-dvd.iso
給兩個網上的教程
http://blog.csdn.net/gdfsbingfeng/article/details/53287278
http://blog.csdn.net/wangqing_12345/article/details/52484723