ivaneeo's blog

          自由的力量,自由的生活。

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
          例如,如果已經(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)中安裝,運行就會失敗.
          posted on 2005-08-04 22:02 ivaneeo 閱讀(2802) 評論(1)  編輯  收藏 所屬分類: gcc小試牛力

          Feedback

          # re: gcc函數(shù)庫和包含文件 2007-09-24 16:35
          請問下 $gcc myapp.c -I /home/fred/include -o myapp
          如果是有兩個文件夾怎么辦?有分號民分隔?
          $gcc myapp.c -I /home/fred/include;/home/fred/include -o myapp




          郵件 yu200205@126.com  回復(fù)  更多評論
            

          主站蜘蛛池模板: 山西省| 梁平县| 循化| 巴林右旗| 鹤庆县| 普洱| 安化县| 清涧县| 哈尔滨市| 樟树市| 喀喇沁旗| 安吉县| 滨州市| 长治市| 多伦县| 江山市| 德安县| 襄汾县| 辽中县| 根河市| 西和县| 南雄市| 富裕县| 阳原县| 赤水市| 广昌县| 伽师县| 眉山市| 交城县| 富锦市| 玉门市| 东山县| 台南市| 大石桥市| 万州区| 天水市| 安吉县| 岱山县| 余干县| 铜鼓县| 泰兴市|