- 主题:二进制程度复制到另一台机器上,库找不到了
原来机器上boost 1.65,源码编译,运行没有问题。
后来我把这个程序复制到另一台机器上,这上面boost版本是 1.67 ,这个程序就不认,
报 boost1.65找不到。
我只好源码编译,这个当然没有问题了。
我的问题是,新机器上有比 有更高版本的库,这样也不行?
还是我的编译方法有问题?
--
FROM 222.66.76.*
ln -sf boost_1.6.7 boost_1.6.5试试
--
FROM 218.68.91.*
这个我觉得应该可以吧,向上兼容总是应该的。
我想别的程序不会找特定版本的库吧,比如 rt.so 一般会有一个 rt.so 文件,再有一个实际的 rt.x.y.z.so 版本。 编译的程序只会找rt.so 不会找特定版本的。为啥我直接编译出来的就找boost特定版本的了呢,需要啥额外工作不。
总不可能到处源码编译吧。
【 在 prc79 (PRC) 的大作中提到: 】
: ln -sf boost_1.6.7 boost_1.6.5试试
--
FROM 222.66.76.*
静态编译吧,不用折腾了
【 在 wuhaochi (oo) 的大作中提到: 】
: 原来机器上boost 1.65,源码编译,运行没有问题。
: 后来我把这个程序复制到另一台机器上,这上面boost版本是 1.67 ,这个程序就不认,
: 报 boost1.65找不到。
: ...................
--
FROM 123.123.106.*
有可能对有的符号有版本要求
elf可以对符号进行版本描述
【 在 wuhaochi 的大作中提到: 】
: 这个我觉得应该可以吧,向上兼容总是应该的。
: 我想别的程序不会找特定版本的库吧,比如 rt.so 一般会有一个 rt.so 文件,再有一个实际的 rt.x.y.z.so 版本。 编译的程序只会找rt.so 不会找特定版本的。为啥我直接编译出来的就找boost特定版本的了呢,需要啥额外工作不。
: 总不可能到处源码编译吧。
: ...................
--
FROM 218.68.91.*
ldd看一下,应该是有依赖
【 在 wuhaochi 的大作中提到: 】
: 原来机器上boost 1.65,源码编译,运行没有问题。
:
: 后来我把这个程序复制到另一台机器上,这上面boost版本是 1.67 ,这个程序就不认,
: ...................
--来自微水木3.5.1
--
FROM 117.136.54.*
这就是linux提供源码编译的原因,环境变化,就会导致binary文件不能运行
【 在 wuhaochi (oo) 的大作中提到: 】
: 原来机器上boost 1.65,源码编译,运行没有问题。
: 后来我把这个程序复制到另一台机器上,这上面boost版本是 1.67 ,这个程序就不认,
: 报 boost1.65找不到。
: ...................
--
FROM 106.39.151.*
C++的库,基本不要指望小数点后第一位有变化的时候还能兼容。
class里面新增删除或修改任何成员变量和虚函数都会导致不兼容。
所以老老实实重新编译吧。
【 在 wuhaochi (oo) 的大作中提到: 】
: 原来机器上boost 1.65,源码编译,运行没有问题。
: 后来我把这个程序复制到另一台机器上,这上面boost版本是 1.67 ,这个程序就不认,
: 报 boost1.65找不到。
: 我只好源码编译,这个当然没有问题了。
: 我的问题是,新机器上有比 有更高版本的库,这样也不行?
: 还是我的编译方法有问题?
--
FROM 49.7.21.*
想多了,向上兼容是一种奢侈品。
【 在 wuhaochi (oo) 的大作中提到: 】
: 这个我觉得应该可以吧,向上兼容总是应该的。
: 我想别的程序不会找特定版本的库吧,比如 rt.so 一般会有一个 rt.so 文件,再有一个实际的 rt.x.y.z.so 版本。 编译的程序只会找rt.so 不会找特定版本的。为啥我直接编译出来的就找boost特定版本的了呢,需要啥额外工作不。
: 总不可能到处源码编译吧。
: ...................
--
FROM 49.7.21.*
所以 Qt 在这方面真是典范了。为了保持二进制兼容,内部大量使用了 d-pointer 技术。在外部看来,所有的类型都只有一个指针。很少很少添加虚函数。
【 在 laputa2013 (天空遗迹) 的大作中提到: 】
: C++的库,基本不要指望小数点后第一位有变化的时候还能兼容。
: class里面新增删除或修改任何成员变量和虚函数都会导致不兼容。
: 所以老老实实重新编译吧。
: ...................
--
FROM 110.81.12.*