簡體   English   中英

我可以更改boost lib文件的名稱嗎?

[英]Can I change the boost lib files' names?

我用cmd sudo apt-get install libboost-dev 我在/usr/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

現在,我想將程序與boost鏈接起來。

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

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

lib文件名libboost_iostreams.so.1.46.1是否會導致此問題? 如果是這樣,我可以將其重命名為libboost_iostreams.so嗎?

以及為什么我有libboost_regex.solibboost_regex.so.1.46.1 他們是一樣的嗎?

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

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

創建符號鏈接以命名指向實際文件的名稱更有意義。 例如,在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


上面的boost 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM