IT门户, 中国互联网人工智能物联网行业资讯平台--公众IT
新闻来源:互联网资料整理       发布时间:2023/4/7 7:25:26       共计:4609 浏览

请高手指教:如何将Qt程序移植到安卓系统中运行?

你的linux系统版本太低了,RHEL5?CentOS5?

QT是做桌面开发的,用更新快的linux发行版如Ubuntu,Fedora之类就没问题了。RHEL/CentOS 6.x应该也是可以的。

如果真想在你现在的linux系统上运行,并且linux比较熟的话,可以找个新版本的libstdc++.so.6,用它来运行QtSDK(设置LD_LIBRARY_PATH)。即使这样难保它不会再依赖其它库的新版本。

安卓手机能上QT吗?

有安卓版,不过问题太多,正常使用都很难,我安装了的,不过问题实在太多了

怎样才可以在别人的电脑上运行自己的QT程序?

你可以参考SQLiteStudio这个Qt写的跨平台SQLite管理工具,它自己打包了依赖的Qt库,可以做到解压即用,兼容不同Linux发行版.道理其实跟Windows版Qt程序自带Qt库差不多.

编译前给连接器传一个参数:

说明:

-Wl 表示告诉编译器将后面的参数传递给链接器.

rpath是gcc的一个参数,当程序被加载时,会搜寻rpath目录,寻找共享库.

rpath添加的目录信息保存在可执行文件中.

$ORIGIN表示可执行文件所在的目录.

也就是运行时程序会先去自己所在的目录的lib里去加载依赖库,没有的话再去系统库里找.


如果你的程序在编译时没有传递rpath参数,那你也可以用patchelf来修改你程序的rpath:

注意:patchelf修改文件后再strip会导致文件损坏.

所以应该先用strip删除符号表缩小二进制文件,然后再用patchelf设置rpath.


题外话,Android上既没有glibc库,也没有库链接器ld-linux.so.3.

如果你要把Debian ARM(如树莓派Raspbian)上的软件放到Android上跑,你一样可以打包程序依赖的共享库,让程序也能跑在Android上,比如PHP:

也就是你把库链接器ld-linux-armhf.so.3和PHP依赖的库都放到/data/local/tmp/web/lib里,然后设置个别名,就能在Android的adb shell里运行树莓派的PHP了.

当然,你也可以用patchelf设置PHP的interpreter和rpath,效果差不多:

版权说明:
本网站凡注明“公众IT 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
您可以扫描右侧微信二维码联系我们。
网站首页 关于我们 联系我们 合作联系 会员说明 新闻投稿 隐私协议 网站地图