ivaneeo's blog

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

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
          例如,如果已經在/home/fred/include 下保存了自定義的頭文件,那么為了讓gcc能夠找到它們,可按下面的例子使用-I選項:
          $gcc myapp.c -I /home/fred/include -o myapp
          -L選項對庫文件起的作用和-I選項告訴gcc把DIRNAME添加到庫文件搜索路徑里,要保證DIRNAME比標準位置先被搜索.
            假設讀者需要測試一個新的編程庫libnew.so,當前它保存在/home/fred/lib下(.so是共享庫文件的標準擴展名).為了鏈接庫文件,gcc命令行應與下面類似:
          $gcc myapp.c -L/home/fred/lib -lnew -o myapp
          -L/home/fred/lib結構讓gcc先在/home/fred/lib下查找庫文件,然后再到默認的庫文件搜索路徑下進行查找.-l選項使得鏈 接程序使用指定的函數庫中的目標代碼,也就是本例中的libnew.so.把函數庫命名為lib{名字}是UNIX的約定,與許多其他編譯器一樣,gcc 也遵循此約定.如果忘了使用-l選項,則與庫的鏈接將失敗,并且gcc產生錯誤,說明程序中引用了未定義的函數名.
          默認情況下,gcc使用共享庫進行鏈接,所以在需要鏈接靜態庫時必須使用-static選項來保證只使用靜態庫.
          $gcc cursesapp.c -lncurses -static -o cursesapp
          在鏈接靜態庫時,可執行程序的大小比鏈接共享庫要達很多.使用共享庫時,程序所使用的代碼是在運行時動態鏈接,而不是在編譯時靜態鏈接,因此,如果所需要的共享庫沒有在用戶系統中安裝,運行就會失敗.
          posted on 2005-08-04 22:02 ivaneeo 閱讀(2803) 評論(1)  編輯  收藏 所屬分類: gcc小試牛力

          Feedback

          # re: gcc函數庫和包含文件 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  回復  更多評論
            

          主站蜘蛛池模板: 苗栗县| 秦皇岛市| 沙河市| 肥城市| 平南县| 南城县| 交城县| 普宁市| 高州市| 洞口县| 德保县| 桓台县| 芦溪县| 靖宇县| 邹平县| 永春县| 抚顺县| 鸡泽县| 开江县| 枞阳县| 郎溪县| 北流市| 仲巴县| 南通市| 怀宁县| 开鲁县| 剑川县| 齐河县| 高邮市| 荔波县| 黑山县| 精河县| 文成县| 都江堰市| 土默特右旗| 宜君县| 泰兴市| 嘉祥县| 达州市| 台北县| 文化|