linux不同机器下发布程序

 在本机的linux环境下编译好,可以在本机上运行,但是由于要到现场安装,将程序直接拷贝过去时,发现程序运行报错。例如

/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found
/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found
/lib/libc.so.6: version `GLIBC_2.7' not found (required by /usr/lib/libcrypto.so.10)

用命令ldd查看程序依赖的库文件有:


我们可以看到这些库文件都是在/lib/路径下的,特别是ld-linux.so.2,这里的ld-linux.so.2决定的程序查找库的默认路径起了作用。其他另外机器也有这些库,不过由于库文件版本的原因导致程序Run不起来。如果我们将这些库拷贝到其他机器上,程序依赖这些版本的库就不会有问题。因此我们可以这么做:

(1)将这些库文件拷贝到一个新建的文件夹下 /home/dynamic/下。

(2)然后修改makfile文件,makefile的g++编译选项最后,添加如下选项用来指定动态库的优先搜索路径和动态链接器:-Wl,--rpath=/home/dynamic/ -Wl,--dynamic-linker=/home/dynamic/ld-linux.so.2 ,重新编译。再用ldd命令查看编译的程序就可以看到依赖的库的文件的路径都响应修改了。

(3)如果将程序部署到另外台机器,在其他机器上新建 /home/dynamic/,将刚刚在编译器的机器上的库文件拷贝过去。这样程序就可以正常运行了

具体也可以参考文章http://tech.ddvip.com/2013-11/1384435922205976.html


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值