【问题标题】:ubuntu - can not find shared library while compilingubuntu - 编译时找不到共享库
【发布时间】:2013-06-25 10:55:40
【问题描述】:

我想用这样的语句编译代码:

 c++ -I /usr/boost_1_53_0 boost_test.cpp -o boost \ /usr/lib/boost/libboost_regex.a

但它会抛出

c++: error:  /usr/lib/boost/libboost_regex.a: No such file or directory

我确定,libboost_regex.a 存在于上述目录中。 如何解决?我是 ubuntu 和 linux 的新手。 期待您的提示。谢谢。

【问题讨论】:

  • ls -la /usr/lib/boost/libboost_regex.a 得到什么输出?
  • -rw-r--r-- 1 root root 2627884 cze 25 11:11 /usr/lib/boost/libboost_regex.a
  • 您的命令行中是否还包含反斜杠 ("\")?如果它是单行,您最终会搜索<blank>/usr/lib/boost/libboost_regex.a - 您可以尝试删除反斜杠吗?
  • 解决了 :),问题是上面提到的反斜杠“\”。感谢和抱歉这样一个新手问题,我必须习惯 linux...
  • @andreas 看起来在正确的路径上 - 错误消息中有 2 个空格,标准错误消息是 error:,消息中有一个空格

标签: linux boost compilation


【解决方案1】:

问题在于命令行中包含的反斜杠:

c++ -I /usr/boost_1_53_0 boost_test.cpp -o boost \ /usr/lib/boost/libboost_regex.a
                                                  ^
                                                  +-- escaped space character

这个反斜杠转义了后面的空格字符,因此路径名实际上是(使用percent encoding 以获得更好的可读性):

%20/usr/lib/boost/libboost_regex.a

要解决它,只需删除反斜杠字符即可。

【讨论】:

    猜你喜欢
    • 2017-06-07
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多