2014-03-29 87 views
0

我用cmd sudo apt-get install libboost-dev安裝了boost。我發現/usr/lib下我升壓LIB文件是這些:我可以更改boost lib文件的名稱嗎?

$ ls /usr/lib | grep boost 
libboost_filesystem.so.1.46.1 
libboost_iostreams.so.1.46.1 
libboost_python-py27.so.1.46.1 
libboost_python-py32.so.1.46.1 
libboost_regex.a 
libboost_regex-mt.a 
libboost_regex-mt.so 
libboost_regex.so 
libboost_regex.so.1.46.1 
libboost_serialization.so.1.46.1 
libboost_system.so.1.46.1 
libboost_thread.so.1.46.1 
libboost_wserialization.so.1.46.1 

現在,我想我的程序與提升鏈接。

G ++:g++ test.cc -lboost_regex -lboost-iostreams -g -o prog

結果:/usr/bin/ld: cannot find -lboost_iostreams

是否庫文件名libboost_iostreams.so.1.46.1導致此問題?如果是這樣,我可以將它重命名爲libboost_iostreams.so

爲什麼我有libboost_regex.solibboost_regex.so.1.46.1?他們是否相同?

回答

0

我建議不要重命名庫。建立一個軟鏈接是可取的。我不確定apt-get如何處理由用戶刪除或重命名的文件,而不是由apt-get本身處理。

libboost_regex.so是最有可能的軟鏈接libboost_regex.so.1.46.1

0

它更有意義,創建一個名爲您想要指向的實際文件什麼符號鏈接。例如,在Mac OS X上,如果我運行:

ls -l `which lynx` | more 

然後我看到所有的鏈接。其中一些看起來像:

c++ -> clang++ 
cc -> clang 
jar -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jar 


鏈路創建命令ln。爲了使一個符號鏈接使用-s選項,如下所示:

ln -s /path_to_source_file /path_to_symbolic_link 


舉例升壓iostream庫路徑之上:

ln -s /usr/lib/libboost_iostreams.so.1.46.1 /usr/lib/libboost_iostreams.so 

準備在ln命令前預先考慮sudo。每次修改/usr/..區域時,我都必須在我的MacBook Pro上使用sudo。我期待Ubuntu的一樣。刪除符號鏈接類型:

rm /path_to_symbolic_link 

請記住,sudo可能有必要再次。

相關問題