国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 編程設計 > 正文

linux軟件開發時給gcc指定頭文件和庫文件路徑的方法

2020-07-14 13:26:49
字體:
來源:轉載
供稿:網友

在Linux 下開發軟件時,完全不使用第三方函數庫的情況是比較少見的,通常來講都需要借助一個或多個函數庫的支持才能夠完成相應的功能。從程序員的角度看,函數庫實 際上就是一些頭文件(.h)和庫文件(.so或者.a)的集合。雖然Linux下的大多數函數都默認將頭文件放到/usr/include/目錄下,而庫 文件則放到/usr/lib/目錄下,但并不是所有的情況都是這樣。正因如此,GCC在編譯時必須有自己的辦法來查找所需要的頭文件和庫文件。

GCC采用搜索目錄的辦法來查找所需要的文件,-I 選項可以向GCC的頭文件搜索路徑中添加新的目錄。例如,如果在/home/xiaowp/include/目錄下有編譯時所需要的頭文件,為了讓GCC能夠順利地找到它們,就可以使用-I選項

同樣,如果使用了不在標準位置的庫文件,那么可以通過-L選項向GCC的庫文件搜索路徑中添加新的目錄。例如,如果在/home/xiaowp/lib/目錄下有鏈接時所需要的庫文件libfoo.so,為了讓GCC能夠順利地找到它,可以使用下面的命令:

值得好好解釋一下的是-l選項,它指示GCC去連接庫文件libfoo.so。Linux下 的庫文件在命名時有一個約定,那就是應該以lib三個字母開頭,由于所有的庫文件都遵循了同樣的規范,因此在用-l選項指定鏈接的庫文件名時可以省去 lib三個字母,也就是說GCC在對-lfoo進行處理時,會自動去鏈接名為libfoo.so的文件。

Linux下的庫文件分為兩大類分別是動態鏈接庫(通常以.so結尾)和靜態鏈 接庫(通常以.a結尾),兩者的差別僅在程序執行時所需的代碼是在運行時動態加載的,還是在編譯時靜態加載的。默認情況下,GCC在鏈接時優先使用動態鏈 接庫,只有當動態鏈接庫不存在時才考慮使用靜態鏈接庫,如果需要的話可以在編譯時加上-static選項,強制使用靜態鏈接庫。例如,如果在 /home/xiaowp/lib/目錄下有鏈接時所需要的庫文件libfoo.so和libfoo.a,為了讓 GCC在鏈接時只用到靜態鏈接庫,可以使用下面的命令:


復制代碼
代碼如下:

# gcc foo.c -L /home/xiaowp/lib -static -lfoo -o foo

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江口县| 临朐县| 仁布县| 农安县| 富裕县| 胶南市| 维西| 怀宁县| 达日县| 铅山县| 镇宁| 兴隆县| 阿拉善右旗| 济阳县| 永昌县| 云龙县| 东方市| 清远市| 金川县| 淅川县| 高碑店市| 娄底市| 景宁| 泰和县| 金阳县| 大同县| 缙云县| 东安县| 桑日县| 华亭县| 迁西县| 略阳县| 定西市| 信阳市| 岱山县| 独山县| 巫山县| 交城县| 乌恰县| 五峰| 彭州市|