zoukankan      html  css  js  c++  java
  • 关于Linux动态库的加载路径

    问题

    按如下步骤在Ubuntu上编译安装Google Protocol Buffers

    $ ./configure 
    $ make
    $ make check
    $ sudo make install

    运行

    $ protoc --version 

    出现找不到动态库的错误

    protoc: error while loading shared libraries: libprotobuf.so.7: cannot open shared object file: No such file or directory 

    原因

    protobuf的默认安装位置是 /usr/local/usr/local/lib 不在Ubuntu系统默认的 LD_LIBRARY_PATH 里。这个问题 protobufREADME.txt 写得很清楚,怪自己不仔细。

    ** Hint on install location **

    By default, the package will be installed to /usr/local. However,
    on many platforms, /usr/local/lib is not part of LD_LIBRARY_PATH.
    You can add it, but it may be easier to just install to /usr
    instead. To do this, invoke configure as follows:

    ./configure --prefix=/usr

    If you already built the package with a different prefix, make sure
    to run "make clean" before building again.

    解决

    参考文章里面提供了几种方法,这里只使用其中的一种。
    1. 创建文件 /etc/ld.so.conf.d/libprotobuf.conf 包含内容 

    /usr/local/lib

    2. 运行命令

    $ sudo ldconfig 

    这时再运行 protoc --version 就可以得到版本号了

    $ protoc --version 
    libprotoc 2.4.1

    参考

  • 相关阅读:
    杭电2081
    杭电2083
    杭电2084
    3/5/2014 cfb 小心
    116
    uva10003
    10815
    127
    674
    uva 13598
  • 原文地址:https://www.cnblogs.com/shaobin0604/p/2232144.html
Copyright © 2011-2022 走看看