linux基本編譯命令

2021-07-23 22:22:08 字數 1460 閱讀 1433

當檔案編譯:

一步到位的編譯命令

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 ...