用于部署到远程Linux主机的命令行的Qt Creator stdin

时间:2012-08-08 16:46:39

标签: c++ qt qt-creator cross-compiling remote-debugging

我正在使用Qt Creator的Remote Deploy功能在嵌入式Linux目标板上启动我的简单命令行应用程序。我的测试应用程序非常简单,并要求用户打印他/她的名字。它交叉编译,传输到电路板,然后启动,Qt Creator底部附近的“应用输出”窗口显示“输入您的名字:”提示,但我无法在任何地方输入并为通过Qt Creator远程运行的应用程序提供标准输入。

如何在Qt Creator中实现这一目标?我可以以某种方式操纵部署'参数'来连接设备以向我的命令行应用程序提供stdin吗?我也无法通过选中Projects>下的'run in terminal'复选框远程启动应用程序。运行配置,因为它不可用于远程部署。

代码:

#include <iostream>

using namespace std;

int main() {
    cout << "Enter a number: ";
    int nb;
    cin>>nb;
    cout << "Here is your number:" << nb << endl;
    return 0;
}

Qt Creator中的应用程序输出:

Killing remote process(es)...
Starting remote process ...
Remote process started.
Enter a number: d

2 个答案:

答案 0 :(得分:5)

我发现没有办法为IDE中的qt creator启动的应用程序提供stdin。

我确实尝试了一些东西,它看起来像命名管道工作得很好。幸运的是它包含在Busybox中,所以它在我的主板上。

要使用它,您可以使用“运行设置”下的“设备上的备用可执行文件”选项从Qt Creator远程启动应用程序 并将命名管道的最后一行传递给你期待stdin的c ++程序。因此,您在设备上的“备用可执行文件”如下所示:

cd /home/test; tail -f mypipe | ./test3 –qws

'test3'是我的程序,/ home / testis是可执行文件的位置。

然后打开一个额外的ubuntu终端并通过SSH连接到主板。现在创建一个名为'mypipe'的命名管道:

mkfifo mypipe

当你的程序期望stdin启动并等待输入时,你可以回应它的输入 其他终端进入命名管道,你的程序将把它作为stdin:

echo ‘2’ > mypipe

答案 1 :(得分:0)

调试&gt;中有更多选项启动调试子菜单。还有一个你需要的:附加到运行调试服务器。它确实打开了这个整洁的小窗口:

Attach to running server dialog

正如您所看到的,有很多参数,甚至是“Run in terminal”选项,但由于某些原因它在我的机器上不起作用。不要忘记正确设置可执行二进制和套件设备设置的本地路径。我还建议您在环境&gt;中为AttachToRemoteServer命令绑定热键。 键盘设置。

之后,您唯一需要做的就是在远程设备上运行gdbserver

gdbserver :<port> <executable>

正在运行的进程有一个正确的stdinstdout个流,您可以通过SSH会话与终端中的应用程序进行交互。