麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄色av.com| 欧美一级黄色免费 | 久国产精品视频 | 伦理三区 | 激情视频导航 | 一级黄片毛片免费看 | 黄色羞羞视频在线观看 | 国产精品久久久久久久久久了 | 99国产精品国产免费观看 | 久久精品一二三区白丝高潮 | 精品亚洲福利一区二区 | 姑娘第四集免费看视频 | 中文字幕在线观看1 | 精品久久久久久 | 精品成人国产在线观看男人呻吟 | 羞羞的视频免费 | 黄色大片网站在线观看 | 国产在线播放91 | 最新一级毛片 | 黄色美女免费 | 午夜影视一区二区 | 免费在线观看中文字幕 | 国产女厕一区二区三区在线视 | 成人做爰高潮片免费视频韩国 | 久久草草影视免费网 | 99精品视频久久精品视频 | 欧美性受xxxxxx黑人xyx性爽 | 亚洲视频黄 | av色偷偷| 国产羞羞视频在线免费观看 | 欧美在线中文字幕 | 欧日一级片 | 毛片免费看的 | 福利免费观看 | 欧美成人一级 | 久久久久久久久久久久久久久久久久 | 免费国产一级特黄久久 | 在线播放黄色片 | 欧美大穴| 久久精品亚洲一区二区 | 中文字幕在线日韩 |