如何判断二进制文件可以在终端中运行还是需要Linux上的X Window System而无法访问Internet?


1

如果我想知道是否可以从命令行,X Window System或两者同时运行二进制文件,如何在不访问Internet的情况下知道?


等待...您是否正在询问如何确定二进制文件是否利用了任何类型的GUI?
鲍比2012年

@Bobby-我问的是二进制文件是否需要使用桌面环境或X Window系统才能运行,如果要这样做,我该如何区分明显使用前缀(例如gedit)的方式
PeanutsMonkey,2012年

1
ldd在可执行文件上使用。
David Schwartz

@David Schwartz-您的意思是ldd vim
PeanutsMonkey 2012年

相反ldd $(which vim)我会说。
Eroen

Answers:


4

使用ldd来检查它是否是针对X11库链接,如libX11libxcb。如果列出了任何一个,则程序可以使用X11。

但是,这并不意味着它需要 X11。如果不检查源代码或运行程序,就无法通过编程确定。例如,如果X11可用,则程序可能会显示图形窗口,否则会显示文本界面。

如果可执行文件是静态链接的,请strings在其上运行并查找单词“ DISPLAY”,“ .Xauthority”,“ /tmp/.X”或类似名称。这是一个甚至更不可靠的指标,因为即使在纯文本程序中,这些字符串也可能偶尔出现。


+1。尽管它不能解决问题中的所有问题,但除非有可用的资料来源,否则我认为没有更好的解决方案。
Eroen

@grawity-静态链接是什么意思?
PeanutsMonkey 2012年

1
@PeanutsMonkey:一种将库函数复制到可执行文件本身的方法,而不仅仅是通过/usr/lib/*.so文件引用它们。
grawity 2012年

1

阅读手册页。

尽管您实际上可能必须阅读愚蠢的内容,而不是浏览用法并快速浏览选项。

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.