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

Cla*_*ang 6 c++ qt cross-platform qt4 qt-creator

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

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

错误消息是

bash: ./[filename]: cannot execute binary file
Run Code Online (Sandbox Code Playgroud)

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

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

Error while loading shared libraries: libQtGUI.so.4: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

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

QMAKE_CFLAGS_RELEASE    += -Os -static
QMAKE_CPPFLAGS_RELEASE  += -Os -static
QMAKE_CXXFLAGS_RELEASE  += -Os -static
QMAKE_CCFLAGS_RELEASE   += -Os -static
Run Code Online (Sandbox Code Playgroud)

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

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

QMAKE_LFLAGS += static
Run Code Online (Sandbox Code Playgroud)

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

谢谢你的帮助!

Nik*_*sov 4

检查 64 位与 32 位 -file(1)这是您的朋友。然后检查缺少哪些库ldd(1)

编辑:

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

  • 您需要 gcc 选项“-m32”并将 -L 选项更改为您的 32 位库路径。看看这里,看看它是否有用 -> http://ubuntuforums.org/showthread.php?t=265585 (3认同)