博客專欄

        EEPW首頁 > 博客 > Makefile 中 -rpath -rpath-link

        Makefile 中 -rpath -rpath-link

        發(fā)布人:電子禪石 時間:2024-02-20 來源:工程師 發(fā)布文章
        -rpath和-rpath-link

        假設(shè)有3個文件,在同一目錄下,有這樣的依賴關(guān)系

        test->liba.so->libd.so

        如果編譯test的時候這樣寫

        gcc test.c –la

        warning:libd.so, needed by liba.so not found

        解決辦法有3個

        方法1

        gcc test.c –la –ld

        方法2

        gcc test.c –la -Wl,-rpath-link ./

        這樣就告訴編譯器,當(dāng)要尋找liba的依賴庫時候,請到 ./去找

        方法3

        gcc test.c –la -Wl,-rpath ./

        這樣就告訴編譯器,當(dāng)要尋找liba的依賴庫時候,請到 ./去找

        方法2和方法3有什么區(qū)別呢?

        -rpath和-rpath-link都可以在鏈接時指定庫的路徑;但是運(yùn)行可執(zhí)行文件時,-rpath-link指定的路徑就不再有效(鏈接器沒有將庫的路徑包含進(jìn)可執(zhí)行文件中),而-rpath指定的路徑還有效,程序回到指定的路徑中去找?guī)?因為鏈接器已經(jīng)將庫的路徑包含在可執(zhí)行文件中了。)最后,不管使用了-rpath還是-rpath-link,LD_LIBRARY_PATH還是有效的。


        *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



        關(guān)鍵詞: makefile

        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 商都县| 红原县| 河间市| 扎囊县| 贵阳市| 教育| 南康市| 怀集县| 长岭县| 祁东县| 晴隆县| 贵州省| 延寿县| 炉霍县| 麻城市| 宁德市| 大冶市| 资中县| 孝感市| 辽阳市| 翁源县| 五常市| 阿瓦提县| 仪陇县| 大丰市| 宁南县| 扶余县| 布拖县| 泊头市| 黄石市| 天水市| 临高县| 二手房| 岑溪市| 昂仁县| 卓尼县| 教育| 阳城县| 康保县| 娄烦县| 固安县|