这篇文章是由https://blog.csdn.net/herehear/article/details/101448176衍生出来的。
主旨是C/C++版的一次编译,到处运行。
有了前面的基础后,现在可以着手把Qt开发的界面也做到一次编译,到处运行。
这篇文章本质上是没有新技术难点的,主要是解决一些Qt运行时的一些问题。
在前一篇文章的样例中,编译libsimple.so时,指定了其rpath选项 使其在运行过程中能够根据不同环境找到libsimple.so的依赖库。
但是现在存在两个问题
- Qt库有相当一部分没有使用rpath选项,这就使得我们必须重编源码或者自定LD_LIBRARY_PATH选项。重编源码无疑是费时费力的,但是LD_LIBRARY_PATH又是有副作用的(比如此环境变量会遗传给所有后代子进程)。
- UI可执行程序在运行过程中会去寻找一个叫X/plugins/platform的文件夹,所以必须连同此文件夹一起放进安装包中,并且指定此文件夹的路径:
export QT_PLUGIN_PATH=X/plugins/platform。
在Qt论坛上有一个提问者
使用LD_LIBRARY_PATH和QT_PLUGIN_PATH两个环境变量解决这两个问题并提供了