安装zeroMQ以及error while loading shared librarie找不多对应so文件的错误解决

从官网下载源码包zeromq-4.2.1.tar.gz,tar解压,进入文件夹
```
# yum install libtool
```


要执行./autogen.sh,因此要安装依赖库
```
# ./autogen.sh 
```


自动生成安装文件
提示
error: Autoconf version 2.64 or higher is required
这是因为我的autoconf的版本不够,又下载安装了2.64版本的autoconf。
重新执行通过
```
#./configure
``` 


检查各种环境,我的机器上提示
configure: error: Unable to find a working C++ compiler
没有c++编译器,使用yum install gcc-c++,安装g++完成
重新执行通过
```
#make
#make install
```
使用官方测试的C语言代码(其它语言的应该要安装对应语言的库),分别编译:
```
# gcc hw_server_c.c -o hw_server -lzmq
# gcc hw_client_c.c -o hw_client -lzmq
```


执行
```
# ./hw_server
```
./hw_server: error while loading shared libraries: libzmq.so.5: cannot open shared object file: No such file or directory
提示的错误是加载动态库找不到对应文件,之前安装的时候没有配置安装地址,找一下动态文件安装到哪里了:
```
# whereis libzmq.so.5
```
libzmq.so: /usr/local/lib/libzmq.so.5 /usr/local/lib/libzmq.so


##可以使用两种方法让程序找到该动态库:
方法1:
将/usr/local/lib加到共享库配置文件/etc/ld.so.conf中,该方法一劳永逸,但是需要有操作权限
```
# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
# echo "/usr/local/lib">>/etc/ld.so.conf
# ldconfig
```
再执行./hw_server成功


方法2:设置环境变量LD_LIBRARY_PATH,适合没有操作权限时使用
```
# vi ~/.bash_profile 
```
编辑你当前用户的用户目录下的.bash_profile文件
在文件后面加上:
```
export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH
```
保存并关闭文件
```
# source ~/.bash_profile 
```
使该文件改动生效(每次登录该用户时也会自动加载该文件,使文件生效)
执行./hw_server成功


执行./hw_server
另外开一个终端执行./hw_client
看到两端交互过程,完成zeroMQ初体验。

你可能感兴趣的:(linux)