0.系统版本:[rtmp@localhost bin]$ more /etc/redhat-release
Red Hat Enterprise Linux Server release 7.4 (Maipo)
1. 将在开发机上生成的bin文件整个打包过到redhat服务器后执行启动程序
[xxx@localhost bin]$ ./start.sh ./XXX: error while loading shared libraries: libuv.so.1: cannot open shared object file: No such file or directory |
1.1在官网上下载最新的版本下来(网址如下 wget 为redhat 直接下载地址):
http://docs.libuv.org/en/v1.x/
wget https://dist.libuv.org/dist/v1.20.2/libuv-v1.20.2.tar.gz
切换root解压后执行
[root@localhost libuv-v1.20.2]# ./autogen.sh ./autogen.sh: line 28: automake: command not found ./autogen.sh: line 33: test: : integer expression expected ./autogen.sh: line 34: test: : integer expression expected + libtoolize --copy ./autogen.sh: line 43: libtoolize: command not found |
提醒找不到automake和libtoolize命令,通过一下命令执行安装(redhat用yum,Ubuntu用apt-get):
# yum -y install automake
# yum -y install libtool
如果提示错误:make: *** No targets specified and no makefile found. Stop.
则运行:yum -y install ncurses-devel
最后常规编译:
# ./configure --prefix=/usr/local/libuv
# make
# make install
生成的libuv.so和libuv.a文件放置在/usr/local/libuv下
本文以上部分参考:http://aigo.iteye.com/blog/2218675
-----------------^_^割割更健康^_^----------------------
2.库安装好后,再次执行程序
[rtmp@localhost bin]$ ./start.sh ./ipc-relay: error while loading shared libraries: libuv.so.1: cannot open shared object file: No such file or directory |
以下部分参考:https://www.cnblogs.com/lisuyun/p/7080401.html
链接器ld默认的目录是/lib和/usr/lib,如果放在其他路径也可以,需要让ld知道库文件在哪里。
方法1:
编辑/etc/ld.so.conf文件,在新的一行中加入库文件所在目录;
运行ldconfig ld.so.conf,以更新/etc/ld.so.cache文件;
方法2:
在/etc/ld.so.conf.d/目录下新建任何以.conf为后缀的文件,在该文件中加入库文件所在的目录;
运行ldconfig + conf文件名,以更新/etc/ld.so.cache文件;
我的解决办法是:/etc/ld.so.conf.d/目录下新建了一个xxx.conf文件加入库的安装路径:/usr/local/libuv/lib
然后执行 ldconfig xxx.conf 更新/etc/ld.so.cache文件
第二种办法,对于原系统的改动最小。因为/etc/ld.so.conf文件的内容是include /etc/ld.so.conf.d/*.conf。所以,在/etc/ld.so.conf.d/目录下加入的任何以.conf为后缀的文件都能被识别到。
ld.so.cache的更新是递增式的,就像PATH系统环境变量一样,不是从头重新建立,而是向上累加。
除非重新开机,才是从零开始建立ld.so.cache文件。
搞定收工。
---再次向两位博主致谢,因为有你们,笨鸟才能飞的更远