隨筆-124  評論-194  文章-0  trackbacks-0
          Linux 運行的時候,是如何管理共享庫(*.so)的?在 Linux 下面,共享庫的尋找和加載是由 /lib/ld.so 實現(xiàn)的。 ld.so 在標準路經(jīng)(/lib, /usr/lib) 中尋找應(yīng)用程序用到的共享庫。

          但是,如果需要用到的共享庫在非標準路經(jīng),ld.so 怎么找到它呢?

          目前,Linux 通用的做法是將非標準路經(jīng)加入 /etc/ld.so.conf,然后運行 ldconfig 生成 /etc/ld.so.cache。 ld.so 加載共享庫的時候,會從 ld.so.cache 查找。

          傳統(tǒng)上, Linux 的先輩 Unix 還有一個環(huán)境變量 - LD_LIBRARY_PATH 來處理非標準路經(jīng)的共享庫。ld.so 加載共享庫的時候,也會查找這個變量所設(shè)置的路經(jīng)。但是,有不少聲音主張要避免使用 LD_LIBRARY_PATH 變量,尤其是作為全局變量。這些聲音是:
          * LD_LIBRARY_PATH is not the answer - http://prefetch.net/articles/linkers.badldlibrary.html
          * Why LD_LIBRARY_PATH is bad - http://xahlee.org/UnixResource_dir/_/ldpath.html
          * LD_LIBRARY_PATH - just say no - http://blogs.sun.com/rie/date/20040710
          解決這一問題的另一方法是在編譯的時候通過 -R<path> 選項指定 run-time path。
          posted on 2009-06-11 09:52 我愛佳娃 閱讀(839) 評論(0)  編輯  收藏 所屬分類: 服務(wù)配置
          主站蜘蛛池模板: 诏安县| 徐汇区| 湾仔区| 新泰市| 广宁县| 黎城县| 电白县| 合作市| 无锡市| 商河县| 巫山县| 定州市| 乌什县| 台东县| 木兰县| 石林| 吴忠市| 特克斯县| 庆阳市| 玉树县| 旬阳县| 鹤壁市| 吴川市| 铜山县| 威远县| 牙克石市| 宜兰县| 弋阳县| 宽甸| 登封市| 凉城县| 灌阳县| 宝坻区| 灵川县| 靖州| 安平县| 凤台县| 重庆市| 佛教| 寿阳县| 阜平县|