我可以更改boost lib文件的名称吗?

时间:2014-03-29 06:44:15

标签: c++ boost

我使用cmd sudo apt-get install libboost-dev安装了boost。我发现/usr/lib下的升级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?它们是否相同?

2 个答案:

答案 0 :(得分:0)

我建议不要重命名库。创建软链接更可取。我不确定apt-get如何处理用户而不是apt-get本身删除或重命名的文件。

libboost_regex.so很可能是libboost_regex.so.1.46.1

的软链接

答案 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

上面的boost iostream库路径示例:

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

准备在sudo命令前添加ln。每次修改/usr/..区域时,我都必须在MacBook Pro上使用sudo。我希望Ubuntu也一样。要删除符号链接类型:

rm /path_to_symbolic_link

请注意,sudo可能需要再次使用。