有没有办法将用c ++编写的Qt5程序编译到Ubuntu Touch?


9

我正在使用Qt5和C ++创建一个程序,我想为Ubuntu Touch Preview或Ubuntu桌面程序编译我的程序。

我正在Nexus 7上运行这些系统。我找到了正确的C ++编译器(arm-linux-gnueabihf-g++),但是如何使Qt5正常工作?


如果@David Planella的答案解决了您的问题,则应将其标记为“已接受”。
Fouric

Answers:


11

简单的方法

您可以使用Ubuntu SDK Alpha的实验功能。它的优点在于您不需要交叉编译。

首先连接到您的设备:

  1. 将设备插入计算机的USB端口
  2. 启动Qt Creator
  3. 点击设备标签
  4. 单击启用按钮以启用开发人员模式
  5. 转到工具> Ubuntu>设备>启用>在Ubuntu设备上进行Cpp编译(实验性)

然后开始黑客:

  1. 在Qt Creator中打开您应用的项目
  2. 转到构建> Ubuntu>在Ubuntu设备上构建C ++项目(实验性)

在设备上构建C ++ Touch项目

然后离开!:-)

如果您喜欢挑战

可以想象,您可以手动在设备上编译应用程序。您可能要尝试以下(未试用)步骤:

  1. SSH进入运行Ubuntu Touch Developer Preview的设备
  2. 安装所需的开发包。根据您的需要,您可能需要将软件包添加到列表中,但这是第一步:

    sudo apt-get install qt5-default qtbase5-dev libqt5v8-5-dev qtdeclarative5-dev libqt5xmlpatterns5-dev qtscript5-dev qttools5-dev qt3d5-dev qtmultimedia5-dev libqt5svg5-dev qtdeclarative5-dev-tools qttools5-dev-tools qtlocation5-dev qtsensors5-dev qtpim5-dev qt-components-ubuntu

  3. 使用您选择的构建系统(cmake,qmake等)构建C ++应用


非常感谢您的回答!我将使用Ubuntu SDK进行尝试。幸运的是Nexus 7是功能强大的设备,我以第二种方式进行了测试,并且效果也不错。
约翰内斯

幸运的是Nexus 7是功能强大的设备,我用Ubuntu台式机手臂测试了第二种方法,并且运行良好,但是Ubuntu Touch Developer Preview找不到这些开发包。
约翰内斯

大卫:我正在尝试这样做,但对于所请求的每个项目,我都会收到“无法找到包裹”的信息。我正在使用Ubuntu 12.40在Pandaboard中工作。你能帮助我吗?
HMarioD

3

还有另一种建议(第三种方法,但很难):
1.获取用于armhf的 linaro工具链
2.获取libhybris和platform-api(来自launchpad.net的 phablet-team )
3.从设备获取动态库(/ lib / arm- Linux的gnueabihf/ usr / lib中/臂-Linux的gnueabihf /
4.补丁mkspecs的qmake
5.编译
6.添加<your_app>的.desktop文件的/ usr /共享/应用/
7.添加线的/ usr / share / qml-phone-shell / Applications / applications.js(我认为可能是可选的)
8.推送您的应用程序和资源
9.重新启动外壳或电话
10.您的应用程序正常运行!(我测试过!)


1

基于先前答案的扩展说明。请记住:此说明描述了在PC上为Ubuntu Touch开发的Qt / Qml,而没有与设备的SSH连接,并且需要像linaro这样的交叉编译工具

第1部分:制作环境

  1. 获取Ubuntu SDK
  2. 获取工具链:Linaro或wia sudo apt-get install gcc-arm-linux-gnueabihf安装工具链及其依赖项。
  3. 获得这两库libhybris平台的API加上QT5库的armhf(可从设备中获得),或者只是下载压缩包的所有库(从压缩包你需要的库和头文件,把它们在在/ usr /臂gnueabihf / lib目录/ usr / arm-gnueabihf / include)。
  4. 获取修改后的qmake config-mkspecs中将解压缩(例如,在/ usr / share / qt5 / mkspecs /中查找)。里面没有目录-qmake.conf。如果编译时遗漏了一些东西,则需要更改该文件中的path变量。
  5. 对于Qt Creator,请创建新的编译配置文件:在“ 编译和部署设置” 中的“ 编译 ”选项卡上-添加新的编译器(arm-linux-gnueabihf-gcc),在“ 工具 ”选项卡上-添加新的配置文件并指定设备类型 -常规linux-device, 编译器 -的,您添加了Profile Qt-通用(我使用的不是重新编译的Qt !!!),Qt mkspec -linux-arm-gnueabihf-gcc。这就是您编译所需的全部内容。对于调试-需要指定其他参数。除此之外,最好从源代码重新编译Qt。但我很懒()

第2部分:部署应用

  1. 通过ADB push / data / ubuntu / <some_path>推送应用程序和资源。操作系统可以在/ <some_path>中找到它们。注意,没有/ data / ubuntu部分。只有adb才需要该部分。
  2. 接下来,需要制作<app_name> .desktop文件:
    • 亚行根
    • 亚行外壳
    • ubuntu_chroot shell-切换到设备上的bash
    • cd / usr / share / applications-带* .desktop文件进入文件夹
    • 复制其中任何一个并使用您的应用程序(使用vi)进行编辑(使用vi)(名称,图标,路径等)
  3. 下一步,与上一个步骤相同(您已经在设备上处于bash状态):
    编辑文件(使用vi/usr/share/qml-phone-shell/Applications/applications.js,在文件中为您的应用添加一部分,与其他应用相同在该文件中。它必须与<app_name> .desktop文件中的相同
  4. 重新启动外壳程序(通过杀死qml-phone-shell进程)或重新启动电话(reboot -p
  5. 现在,您可以从“ 应用程序”页面启动您的应用程序

测试示例和原始材料: EN指令RU指令,以及用于下载工具链和基本库的链接。


欢迎来到Ask Ubuntu!虽然从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。
RolandiXor
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.