萬物皆從hello world程式開始吧。
先上c++的hello world **:
#includeusing namespace std;
int main(){
cout<<"hellow world!"《將上面**另存為test.cpp檔案
以test.cpp的整個生成過程來說吧,所有的檔案預設都是test ,注意字尾名有變化,先來講講編譯原理吧
test.cpp檔案過來第一步需要預處理,預處理目的是將所有的標頭檔案或者巨集進行展開到乙個test.i的檔案,實現**如下:
cpp test.cpp > test.i
說明:執行完後在test.cpp資料夾下會生成test.i檔案,該檔案為展開的檔案,可以用記事本開啟看看內容,乙個hello world 展開後應該有2萬多行**
編譯過程是將test.i檔案匯編成組合語言**檔案,熟悉組合語言的朋友可以看看,**中有mov 、push 等等命令,實現**如下:
g++ -g -s test.i
說明:執行完後會在當前資料夾下生成test.s檔案,該檔案開啟可以看到是組合語言**;
彙編過程目的是將test.s檔案匯編成test.o檔案,該檔案為二進位制檔案,檢視不了內容,開啟時亂碼,實現**如下:
as -o test.o test.s
說明:執行完後在當前目錄下生成test.o檔案(有了點o檔案,也可以將其編譯成asm檔案組合語言,test.asm檔案與test.s檔案不同之處是可以看見c語言作為注釋,便於閱讀,一般鏈結的時候只需要test.o檔案就可以了,該方法只做了解),實現方法如下:
objdump -d -m intel -s test.o > test.asm
鏈結過程我認為是最核心也是最麻煩的步驟,需要將程式依賴的庫檔案(windows裡面的*.lib檔案或.dll檔案、linux裡面的.so檔案,動態鏈結庫)、依賴的二進位制obj(.o)檔案等等都新增進去,以hello world 為例,啟動程序需載入的二進位制檔案scrt1.o、crti.o、crtbegins.o、crtends.o、crtn.o ,實現**如下(它的路徑需要根據實際安裝gcc路徑來確定):
ld -o mytest test.o /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/scrt1.o /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/crtn.o /usr/lib/gcc/x86_64-linux-gnu/7/crtbegins.o /usr/lib/gcc/x86_64-linux-gnu/7/crtends.o -l/usr/lib/gcc/x86_64-linux-gnu/7 -lstdc++ -lc -dynamic-linker /lib64/ld-linux-x86-64.so.2
說明:
執行成功後,當前資料夾會生成mytest的可以執行程式。下面對該語法進行解析,以便於實際的手工編譯
語法結構:ld -o mytest3 test.o [其他鏈結選項]
這裡其他鏈結選項
1、首先載入的分別是scrt1.o、crti.o、crtbegins.o、crtends.o、crtn.o檔案的具體路徑。
2、再跟著的是「-l/usr/lib/gcc/x86_64-linux-gnu/7」 ,為在**尋找動態鏈結庫的路徑 。
3、後面接的是「-lstdc++ -lc -dynamic-linker」 特殊識別符號,「-lstdc++」說明是鏈結c++程式;「-lc」完成的時候系統要求結束的命令;
4、最後為「 /lib64/ld-linux-x86-64.so.2」 庫檔案
hello world 直接編譯的實現**如下:
g++ test.cpp -o mytest //將test.cpp 編譯輸出成可以執行程式mytest
./mytest //執行mytest程式
Ubuntu下手動編譯Tesseract ocr
首先執行sudo apt get install libtoll 版本號 1.69 包名 leptonica 1.69.tar.gz 依次輸入命令.configure make make install安裝 make uninstall clean 解除安裝 www.remotesensing.or...
Linux下手動編譯shogun
手動編譯shogun,如果按照直接按照官網上的步驟進行,會踩非常多的坑,下面分享一下在下的編譯過程,希望能為閣下提供些許借鑑。1.git clone shogun 的工具包。git命令如果沒有安裝,可以通過 apt get install git shogun 的資料夾。2.cd shogun 這與...
CentOS下手動安裝編譯Mysql
新手環境編譯文件記錄 mysql mysql從5.5開始,源 安裝將原來的configure改為cmake,因此在安裝 mysql 5.5.x時,需要先安裝cmake,可以通過原始碼安裝 一 需要安裝各種依賴庫和安裝工具 mysql使用cmake跨平台工具預編譯原始碼,用於設定mysql的編譯引數。...