我已經創建了一個使用visual studio 2010的程序,該程序沒有錯誤。但是,當我嘗試在Linux中運行它時,使用g ++編譯器,我遇到了一些有關未知函數的錯誤,這些錯誤應該是已知的。使用Linux編譯C++程序和其他庫g ++
我有以下文件:
main.cpp
header.h
header.cpp (all in the same folder)
header2.h (which is in a different folder, /.../header2
各種庫,存儲在另一個文件夾中,/.../libs
編譯我用g ++編譯器的代碼,寫在下面終端:
g++ main.cpp header.cpp -I/.../header2 -L/.../libs
我讀過-I前綴指定包含頭文件的include目錄,而-L前綴指定庫目錄。
當我編譯程序它給我的錯誤,而不是從time.h中圖書館認識的功能。我檢查是否安裝了頭,用 查找/ usr/include目錄-name time.h中 並返回我time.h中報頭的位置。我也試着用-lrt編譯,但是它不起作用 g ++ main.cpp header.cpp -I /.../ header2 -L /.../ libs -lrt
I'對Linux非常新,所以任何幫助,將不勝感激。
謝謝。
編輯: 我得到實際的錯誤是:
ellipse_fit.cpp: In function ‘void Create_Permutation(int*, int, int)’:
ellipse_fit.cpp:53:29: error: ‘rand’ was not declared in this scope
a[i] = (int)((double)rand()/RAND_MAX*(double)range);
ellipse_fit.cpp:53:31: error: ‘RAND_MAX’ was not declared in this scope
a[i] = (int)((double)rand()/RAND_MAX*(double)range);
的ellipse_fit.cpp將是我在我的例子中提到的header.cpp的equivelent。
聽起來像是你實際上並沒有包括'time.h'任何地方 - 它往往是一些系統頭「在別人拖」,在一個系統,而不是當你在另一個環境編譯的情況。這將有助於你的很多人能夠用你的真實路徑和真正的頭文件產生你所看到的最小的例子。 –
編輯我在原帖中得到的實際錯誤! –
那麼,代碼看起來像重現這個?你是否包含'stdlib.h'或'cstdlib'? –