c – 无法在另一个Linux系统上运行可执行二进制文件?

我正在使用Ubuntu 10.04和Qt4.6,并且我已经通过QtCreator在我自己的计算机上创建了一个可执行的二进制文件.

现在我想将我的可执行文件放在CentOS 5上,但似乎这个可执行文件无法在CentOS上运行.

错误消息是

bash: ./[filename]: cannot execute binary file

现在我知道这来自32位和64位问题,并成功创建了32位可执行文件.

但是,由于动态链接问题,这个可执行文件仍然无法在CentOS上运行,它总是显示:

Error while loading shared libraries: libQtGUI.so.4: cannot open shared object file: No such file or directory

我试图在.pro文件中添加“-static”标志

QMAKE_CFLAGS_RELEASE    += -Os -static
QMAKE_CPPFLAGS_RELEASE  += -Os -static
QMAKE_CXXFLAGS_RELEASE  += -Os -static
QMAKE_CCFLAGS_RELEASE   += -Os -static

然而,看起来它只生成“静态二进制”而不是“静态链接”,依赖性仍然存在.

我还尝试在.pro文件中添加以下行:

QMAKE_LFLAGS += static

但是这个项目在执行此操作后无法编译.
我没有权限在Cent OS上安装Qt,如何用静态链接编译这个项目,以便可执行文件可以独立运行?

谢谢你的帮助!

最佳答案
检查64位与32位 – file(1)是你的朋友.然后检查ldd(1)中缺少的库.

编辑:

看看这个问题Qt static linking and deployment.

转载注明原文:c – 无法在另一个Linux系统上运行可执行二进制文件? - 代码日志