linux軟件開發(fā)時(shí)給gcc指定頭文件和庫文件路徑的方法
在Linux 下開發(fā)軟件時(shí),完全不使用第三方函數(shù)庫的情況是比較少見的,通常來講都需要借助一個(gè)或多個(gè)函數(shù)庫的支持才能夠完成相應(yīng)的功能。從程序員的角度看,函數(shù)庫實(shí) 際上就是一些頭文件(.h)和庫文件(.so或者.a)的集合。雖然Linux下的大多數(shù)函數(shù)都默認(rèn)將頭文件放到/usr/include/目錄下,而庫 文件則放到/usr/lib/目錄下,但并不是所有的情況都是這樣。正因如此,GCC在編譯時(shí)必須有自己的辦法來查找所需要的頭文件和庫文件。
GCC采用搜索目錄的辦法來查找所需要的文件,-I 選項(xiàng)可以向GCC的頭文件搜索路徑中添加新的目錄。例如,如果在/home/xiaowp/include/目錄下有編譯時(shí)所需要的頭文件,為了讓GCC能夠順利地找到它們,就可以使用-I選項(xiàng)
同樣,如果使用了不在標(biāo)準(zhǔn)位置的庫文件,那么可以通過-L選項(xiàng)向GCC的庫文件搜索路徑中添加新的目錄。例如,如果在/home/xiaowp/lib/目錄下有鏈接時(shí)所需要的庫文件libfoo.so,為了讓GCC能夠順利地找到它,可以使用下面的命令:
值得好好解釋一下的是-l選項(xiàng),它指示GCC去連接庫文件libfoo.so。Linux下 的庫文件在命名時(shí)有一個(gè)約定,那就是應(yīng)該以lib三個(gè)字母開頭,由于所有的庫文件都遵循了同樣的規(guī)范,因此在用-l選項(xiàng)指定鏈接的庫文件名時(shí)可以省去 lib三個(gè)字母,也就是說GCC在對-lfoo進(jìn)行處理時(shí),會自動去鏈接名為libfoo.so的文件。
Linux下的庫文件分為兩大類分別是動態(tài)鏈接庫(通常以.so結(jié)尾)和靜態(tài)鏈 接庫(通常以.a結(jié)尾),兩者的差別僅在程序執(zhí)行時(shí)所需的代碼是在運(yùn)行時(shí)動態(tài)加載的,還是在編譯時(shí)靜態(tài)加載的。默認(rèn)情況下,GCC在鏈接時(shí)優(yōu)先使用動態(tài)鏈 接庫,只有當(dāng)動態(tài)鏈接庫不存在時(shí)才考慮使用靜態(tài)鏈接庫,如果需要的話可以在編譯時(shí)加上-static選項(xiàng),強(qiáng)制使用靜態(tài)鏈接庫。例如,如果在 /home/xiaowp/lib/目錄下有鏈接時(shí)所需要的庫文件libfoo.so和libfoo.a,為了讓 GCC在鏈接時(shí)只用到靜態(tài)鏈接庫,可以使用下面的命令:
# gcc foo.c -L /home/xiaowp/lib -static -lfoo -o foo
相關(guān)文章

網(wǎng)絡(luò)工程師必備的6款配置文件編輯神器:替代Notepad++!
本期文章介紹了六種網(wǎng)工必備工具,這些工具是網(wǎng)絡(luò)工程師日常工作中必不可少的,也是那些立志成為網(wǎng)絡(luò)工程師的人應(yīng)該熟悉的2026-04-13
首個(gè)版本v1.111已上線! VS Code開啟周更狂飆模式
026年3月10日,微軟宣布將Visual Studio Code(VS Code)更新節(jié)奏從月更提速至周更,并發(fā)布首個(gè)周更版本v1.1112026-03-11
AI直接調(diào)試瀏覽器! VS Code重大更新發(fā)布
還在手動打開瀏覽器、點(diǎn)擊按鈕、檢查控制臺報(bào)錯(cuò)?太累了!現(xiàn)在,最新的VS Code 1.110中AI可以直接調(diào)試瀏覽器2026-03-10
今天帶大家來共同學(xué)習(xí)VC++6.0無法正常運(yùn)行怎么辦?下面就是詳細(xì)完整的操作步驟,快跟小編一起來學(xué)習(xí)一下2026-02-27
vscode調(diào)試c代碼始終找不到exe可執(zhí)行文件的詳細(xì)及解決辦法
在 VS Code 中調(diào)試 C++ 項(xiàng)目時(shí),常見報(bào)錯(cuò):“無法啟動調(diào)試會話:找不到可執(zhí)行文件”,這個(gè)問題問題通常是由于環(huán)境配置不當(dāng)、缺少編譯步驟、路徑設(shè)置錯(cuò)誤、或是launch.json2026-02-27
vscode入門! 小白都能看懂的VS Code保姆級級使用教程
相對于其它前端工具來說,VSCode顯得更加的流暢,今天就將我的學(xué)習(xí)經(jīng)歷和大家分享一下,希望可以幫助到有需要的人2026-02-27
2026年真正值得裝、用得上、不雞肋的 VSCode 插件,其實(shí)沒那么多——挑10個(gè)“神級”不難,但得是每天打開就用、關(guān)掉就難受的那種2026-02-10
VS Code 和 VSCodium怎么選? vscode 和 vscodium之間的區(qū)別
咱們今天就來聊聊 Visual Studio Code (VS Code) 和 VSCodium的相似與區(qū)別,詳細(xì)請看下文介紹2026-01-10
如何啟用.NET Framework3.5? 一鍵安裝net3.5解決軟件依賴問題
你是否曾在安裝某些軟件時(shí)遇到過“需要.NET Framework 3.5”的提示?實(shí),只需要幾步簡單的操作,你就可以輕松解決這個(gè)問題2025-10-28
VS Code中Java擴(kuò)展代碼重構(gòu)功能的使用詳解
在軟件開發(fā)過程中,重構(gòu)是一個(gè)非常重要的環(huán)節(jié),重構(gòu)可以提高代碼的可讀性、可維護(hù)性和可擴(kuò)展性,使代碼更加健壯和易于理解,本文將介紹如何使用 VSCode 進(jìn)行 Java 代碼重構(gòu)2025-09-20





