• 关于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 里。这个问题 protobuf 的README.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:
    1. 创建文件 /etc/ld.so.conf.d/libprotobuf.conf 包含内容 

    /usr/local/lib

    2. 运行命令

    $ sudo ldconfig 

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

    $ protoc --version 
    libprotoc 2.4.1

    方法2:

    1. vim /etc/profile
    2. export LD_LIBRARY_PATH=~/protobuf-2.5.0
    3. source /etc/profile
    4. $ sudo ldconfig 

    LD_LIBRARY_PATH的这里,填写的是protobuf文件的位置

  • 相关阅读:
    SpringMVC
    SpringMVC
    SpringMVC
    Spring
    Spring
    值类型和引用类型
    判断字符串的开头和结尾
    二分法(课后)
    验证码
    从1-36中随机出6个不相等的数
  • 原文地址:https://www.cnblogs.com/ilinuxer/p/5040051.html
Copyright © 2020-2023  润新知