如何区分gui和控制台应用程序elf文件

时间:2017-09-26 03:55:26

标签: c linux elf

我想执行gui only app,但问题是,我不知道如何检查。

你有解决方案吗?

console.log()

2 个答案:

答案 0 :(得分:2)

Linux没有区分" GUI"和控制台应用程序这是只有Windows才有的东西。 Linux GUI应用程序恰好调用导致窗口出现的函数。

您可以做的是检查应用程序是否链接到GUI库中。问题是,要确定它们是什么并不容易。 libX是一个,但它可能没有直接链接(可能通过另一个库)。

ldd是一个可以运行的工具,它将告诉您可执行文件链接的库(包括间接库)。如果列表中没有libX11,则几乎确定这不是GUI程序。如果是,则可能是 GUI程序。

答案 1 :(得分:2)

这种区别在Unix中毫无用处,因为许多程序都有控制台和GUI行为。 ldd也是无用的。例如,在我的电脑上:

% ldd /usr/bin/firefox 
    not a dynamic executable

因为它是一个运行实际firefox可执行文件的shell脚本。但是,firefox几乎肯定会在大多数情况下作为GUI应用程序运行。 python3没有直接链接到X库中,但是用Python编写的任何程序都可能创建窗口,而不执行任何其他应用程序。 ssh可用于在远程主机上执行程序,以便窗口显示在本地计算机的X服务器上等。

如果您需要知道哪个是GUI程序,请询问用户