一,編譯(compile)
含義:用編譯器(compile)將源**生成二進位制目標檔案。在window下為.obj。在linux下為.o檔案。
要求:編譯器要求,語法正確。編譯器只檢測程式語法和函式、變數是否被宣告,函式並不許要被定義。
編譯語法:g++ -c file.cpp 其中-c 為compile生成 file.o的目標檔案
二,鏈結(link)
含義:將所有需要到函式所在的檔案愛你鏈結在一起合成為可執行檔案。
語法:g++ file.o -o file.exe 其中-o 指生成可執行檔案(output)。預設為a.out
【合併】g++ file.cpp -o file.exe
三,庫(library)
含義:對於乙個原始檔很多的大專案,為了避免重複編譯,也為了方便編譯器鏈結,通常會把一些常用到的目標檔案打包(archive),於是就成為了傳說中的庫檔案(library)。在windows下這種包叫「庫檔案」(library file),也就是 .lib 檔案,在unix下,是archive file,也就是 .a 檔案
語法:1)ar -- create, modify, and extract from archives.
@usage: ar cr lib****.a file1.o file2.o // **** 為自定義的庫檔名。
標籤 c (create):如果庫不存在,則建立庫;
標籤 r (replace):如果庫中已存在要新增的物件檔案,則舊的物件檔案將被替換。
實際上 ar 只是乙個打包工具,是archive(打包)的首字母。它將一系列的目標檔案首位連線在一起,並內嵌乙個索引表,使得編譯器能夠方便地找到所需要的函式。一般來說,由於函式索引表的存在,對庫的鏈結要比對一般的物件檔案的鏈結更快。如果 ar 未能完成此項索引表工作,還可以手動用以下的 ranlib 命令建立索引表。
2) ranlib -- generate index to archive.
@usage: ranlib lib****.a
3) nm -- list symbols from object files.
nm可以用來顯示 ranlib 所構建的索引表。你將會看到所有庫里的函式名(除了模板函式template function)。
四, 在編譯時鏈結庫
建立了自己的庫,以後要用到相關函式的時候,只需在**中宣告所要用的函式(必須和庫中定義得相同)。在鏈結的時候,需要給出庫的名稱和位置:
g++ file1.o file2.o -o program.exe -l**** -l****
-l 後緊跟庫檔案所在的目錄位址,-l 後緊跟庫名。
編譯器在鏈結的時候會在所指定的目錄位址下尋找名為 lib****.a 的庫檔案。
Linux C程式設計 1 vim及gcc命令
1.輸入以下命令可以啟動vi 1 vi 不指定檔名,在儲存檔案時需要指定檔名。2 vi 檔名 該檔案既可以是已存在的,也可以是新建的。3 vi n 檔名 進入vi,游標停在第n行開始處。4 vi 檔名 進入vi,游標停在檔案最後一行開始處。4 vi 字串 檔名 進入vi,游標停在第乙個字串處所在行。...
linux c 程式設計
linux下為了安全性不能雙擊執行控制台程式,只有gui程式才能雙擊執行.linux下檔案的型別是不依賴於其字尾名的,但一般來講 o,是目標檔案,相當於windows中的.obj檔案 so 為共享庫,是shared object,用於動態連線的,和dll差不多 a為靜態庫,是好多個.o合在一起,用於...
Linux C程式設計
套接字 sockets 即為網路程序id,是由執行這個程序的計算機的ip位址和這個程序使用的埠 port 組成.可以只用 netstat all 檢視當前系統中網路應用程序的套接字和埠.可以使用 輸出重定向到檔案.linux在標頭檔案中定義了通用的套接字結構型別,可供不同協議呼叫 struct so...