例如,如果已經(jīng)在/home/fred/include 下保存了自定義的頭文件,那么為了讓gcc能夠找到它們,可按下面的例子使用-I選項:
$gcc myapp.c -I /home/fred/include -o myapp
-L選項對庫文件起的作用和-I選項告訴gcc把DIRNAME添加到庫文件搜索路徑里,要保證DIRNAME比標(biāo)準(zhǔn)位置先被搜索.
假設(shè)讀者需要測試一個新的編程庫libnew.so,當(dāng)前它保存在/home/fred/lib下(.so是共享庫文件的標(biāo)準(zhǔn)擴展名).為了鏈接庫文件,gcc命令行應(yīng)與下面類似:
$gcc myapp.c -L/home/fred/lib -lnew -o myapp
-L/home/fred/lib結(jié)構(gòu)讓gcc先在/home/fred/lib下查找?guī)煳募?然后再到默認的庫文件搜索路徑下進行查找.-l選項使得鏈 接程序使用指定的函數(shù)庫中的目標(biāo)代碼,也就是本例中的libnew.so.把函數(shù)庫命名為lib{名字}是UNIX的約定,與許多其他編譯器一樣,gcc 也遵循此約定.如果忘了使用-l選項,則與庫的鏈接將失敗,并且gcc產(chǎn)生錯誤,說明程序中引用了未定義的函數(shù)名.
默認情況下,gcc使用共享庫進行鏈接,所以在需要鏈接靜態(tài)庫時必須使用-static選項來保證只使用靜態(tài)庫.
$gcc cursesapp.c -lncurses -static -o cursesapp
在鏈接靜態(tài)庫時,可執(zhí)行程序的大小比鏈接共享庫要達很多.使用共享庫時,程序所使用的代碼是在運行時動態(tài)鏈接,而不是在編譯時靜態(tài)鏈接,因此,如果所需要的共享庫沒有在用戶系統(tǒng)中安裝,運行就會失敗.
$gcc myapp.c -I /home/fred/include -o myapp
-L選項對庫文件起的作用和-I選項告訴gcc把DIRNAME添加到庫文件搜索路徑里,要保證DIRNAME比標(biāo)準(zhǔn)位置先被搜索.
假設(shè)讀者需要測試一個新的編程庫libnew.so,當(dāng)前它保存在/home/fred/lib下(.so是共享庫文件的標(biāo)準(zhǔn)擴展名).為了鏈接庫文件,gcc命令行應(yīng)與下面類似:
$gcc myapp.c -L/home/fred/lib -lnew -o myapp
-L/home/fred/lib結(jié)構(gòu)讓gcc先在/home/fred/lib下查找?guī)煳募?然后再到默認的庫文件搜索路徑下進行查找.-l選項使得鏈 接程序使用指定的函數(shù)庫中的目標(biāo)代碼,也就是本例中的libnew.so.把函數(shù)庫命名為lib{名字}是UNIX的約定,與許多其他編譯器一樣,gcc 也遵循此約定.如果忘了使用-l選項,則與庫的鏈接將失敗,并且gcc產(chǎn)生錯誤,說明程序中引用了未定義的函數(shù)名.
默認情況下,gcc使用共享庫進行鏈接,所以在需要鏈接靜態(tài)庫時必須使用-static選項來保證只使用靜態(tài)庫.
$gcc cursesapp.c -lncurses -static -o cursesapp
在鏈接靜態(tài)庫時,可執(zhí)行程序的大小比鏈接共享庫要達很多.使用共享庫時,程序所使用的代碼是在運行時動態(tài)鏈接,而不是在編譯時靜態(tài)鏈接,因此,如果所需要的共享庫沒有在用戶系統(tǒng)中安裝,運行就會失敗.