国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 操作系統 > 正文

LD_LIBRARY_PATH與-L的關系以及延伸

2024-06-28 13:23:29
字體:
來源:轉載
供稿:網友
LD_LIBRARY_PATH與-L的關系以及延伸

最近跟同學討論c++在編譯時g++ -L.. 和LD_LIBRARY_PATH的問題,今天在做一個東西的時候發現,我對這兩個東西的理解是錯誤的,經過一番研究,寫下我對這些東西的想法,如果有不對的地方,歡迎指正。

我遇到的問題:

g++ multiple.cpp -L/usr/local/lib -lboost_PRogram_options編譯完后,ldd ./a.out發現

libboost_program_options.so.1.55.0 => not found

但是,當我在.bashrc里面寫入:

export LD_LIBRARY_PATH=/usr/local/lib,然后再編譯,我發現可以了,

這是為什么呢?

LD_LIBRARY_PATH是一個環境變量,它的作用是讓動態鏈接庫加載器(ld.so)在運行時(run-time)有一個額外的選項,即增加一個搜索路徑列表。注意,LD_LIBRARY_PATH是在運行時,才起作用。這個環境變量中,可以存儲多個路徑,用冒號分隔。它的厲害之處在于,搜索LD_LIBRARY_PATH所列路徑的順序,先于嵌入到二進制文件中的運行時搜索路徑,也先于系統默認加載路徑(如/usr/lib)[摘自:http://www.ituring.com.cn/article/22101]

g++ -L:是在編譯的時候,去-L指定的地方找庫,-l庫的名字

上面問題的解釋:我在編譯的時候,用-L -l使程序正確編譯了,但是沒有指定運行時庫去哪些地方尋找庫,而默認的地方不包括/usr/loca/lib,這就造成了./a.out找不到libboost_program_options.so庫,也就出現了上面的問題。

缺點:

LD_LIBRARY_PATH是庫一般是在run-time linking搜索的路徑,但是使用這種方法不管在compiling linking還是run-time linking都是有嚴重的副作用

gcc/g++ -L在compiling linking搜索的路徑,保證你所編譯所需的符號是存在的

如果設置了LD_LIBRARY_PATH,那么你設置的路徑會優先尋找,而且比默認的標準路徑還要早。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乐业县| 绥滨县| 盐边县| 三河市| 乌拉特后旗| 睢宁县| 新丰县| 酉阳| 布尔津县| 沙河市| 凤翔县| 赤壁市| 社会| 西平县| 永顺县| 余庆县| 托里县| 闻喜县| 玉山县| 漳州市| 瑞昌市| 五河县| 蚌埠市| 大城县| 敦煌市| 曲松县| 泰顺县| 阿拉善左旗| 郓城县| 西吉县| 横峰县| 丰镇市| 寻乌县| 自贡市| 凤翔县| 关岭| 堆龙德庆县| 禹城市| 绥芬河市| 灵石县| 伊宁县|