當檔案編譯:
一步到位的編譯命令
gcc test.c -o test
靜態連線庫:lib_.a
動態連線庫:lib_.so
二者的區別僅在於程式執行時所需的**是在執行時動態載入的,還是在編譯時靜態載入的。
「.」當前目錄,」..」上一級目錄
linux下面共享庫預設路徑是:/usr/lib. /usr/local/lib. /lib
linux標頭檔案的預設路徑是:/usr/include/
「<>」至系統預設路徑,」 「」 「至當前路徑
多個程式檔案的編譯:
gcc test1.c test2.c -o test
如果同時處理的檔案不止乙個,gcc仍然會按照預處理、編譯和鏈結的過程依次進行
gcc -c test1.c -o test1.o
gcc -c test2.c -o test2.o
gcc test1.o test2.o -o test
檢錯:
gcc -pedantic illcode.c -o illcode
發現一些不符合 ansi/iso c標準的**,但不是全部
gcc -wall illcode.c -o illcode
能夠使gcc產生盡可能多的警告資訊
gcc -werror test.c -o test
將警告資訊當成編碼錯誤來對待
庫檔案連線:
gcc一般自動去預設的可找庫,但是有時候還是要自己新增標頭檔案和庫檔案的路徑
其中inclulde資料夾的路徑是/usr/dev/mysql/include,lib資料夾是/usr/dev/mysql/lib
插入標頭檔案並生成目標檔案:
gcc –c –i /usr/dev/mysql/include test.c –o test.o
強制鏈結時使用靜態鏈結庫:
gcc鏈結時預設使用動態鏈結庫,加上-static選項,強制使用靜態庫
在/usr/dev/mysql/lib目錄下有鏈結時所需要的庫檔案libmysqlclient.so和libmysqlclient.a為了讓gcc在鏈結時只用到靜態鏈結庫,可以使用下面的命令:
gcc –l /usr/dev/mysql/lib –static –lmysqlclient test.o –o test
ld會去找gcc命令中的引數-l
再找gcc的環境變數library_path
再找內定目錄 /lib /usr/lib /usr/local/lib 這是當初compile gcc時寫在程式內的
動態鏈結時、執行時搜尋路徑順序:
編譯目標**時指定的動態庫搜尋路徑
環境變數ld_library_path指定的動態庫搜尋路徑
配置檔案/etc/ld.so.conf中指定的動態庫搜尋路徑
預設的動態庫搜尋路徑/lib
預設的動態庫搜尋路徑/usr/lib
gcc基本編譯命令
本文 1.gcc o hello hello.c gcc hello.c o hello 2.標頭檔案 標頭檔案提供對常量的定義和對系統及庫函式呼叫的宣告,對c程式來說,標準標頭檔案位置一般為 usr include及其子目錄,如果標頭檔案不在編譯器自動搜尋的目錄裡,則可用 i標誌指定,例如 gcc...
linux 編譯命令
1.編譯gtk程式 gcc o home hil hilexe hmi home hil workspace hmi command.c home hil workspace hmi hmi.c pkg config cflags libs gtk 2.0 i home hil workspace ...
基本 linux命令
rm rf 遞迴刪除 ln s 源 目標 管道命令 把上乙個命令的結果交給 的後面的命令處理 檔案內容查閱 cat 由第一行開始顯示檔案內容 tac 從最後一行開始顯示 nl 顯示的時候輸出行號 more 一頁頁顯示檔案內容 less 與more相似,它可以向前翻頁 head 只看頭幾行 tail ...