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

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

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

          傳統上, Linux 的先輩 Unix 還有一個環境變量 - LD_LIBRARY_PATH 來處理非標準路經的共享庫。ld.so 加載共享庫的時候,也會查找這個變量所設置的路經。但是,有不少聲音主張要避免使用 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)  編輯  收藏 所屬分類: 服務配置
          主站蜘蛛池模板: 灯塔市| 通化市| 汝南县| 喀喇沁旗| 永吉县| 会同县| 新竹市| 冕宁县| 两当县| 秦皇岛市| 凤凰县| 达日县| 芜湖市| 凭祥市| 开江县| 贵州省| 吉林省| 陈巴尔虎旗| 商城县| 阿拉善右旗| 成安县| 高台县| 揭阳市| 岚皋县| 苍梧县| 新建县| 沧州市| 福贡县| 株洲市| 达拉特旗| 靖州| 南昌县| 县级市| 舞阳县| 区。| 康平县| 陈巴尔虎旗| 郧西县| 咸宁市| 昭觉县| 南华县|