国产探花免费观看_亚洲丰满少妇自慰呻吟_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,那么你設置的路徑會優先尋找,而且比默認的標準路徑還要早。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 张家川| 如皋市| 柏乡县| 大厂| 廊坊市| 正安县| 无为县| 顺义区| 崇明县| 丰台区| 分宜县| 襄垣县| 绥江县| 高碑店市| 花莲县| 红桥区| 盐边县| 丽水市| 咸宁市| 康平县| 陵水| 东乌珠穆沁旗| 九寨沟县| 嘉鱼县| 阳新县| 泸水县| 文水县| 霍邱县| 新巴尔虎左旗| 阜康市| 铜鼓县| 安国市| 易门县| 江口县| 石屏县| 巨鹿县| 页游| 中西区| 龙井市| 防城港市| 营口市|