如何在 linux 系统的可执行文件上设置图标(或 .ico 文件)?
Posted
技术标签:
【中文标题】如何在 linux 系统的可执行文件上设置图标(或 .ico 文件)?【英文标题】:How to set icon(or .ico file) on executable file in linux system? 【发布时间】:2021-02-08 10:09:24 【问题描述】:我一直在尝试在 linux 和 macOS 中的 executable file(.exe) 上设置图标。
我了解到有 3 个位置图标集:任务栏、窗口栏和可执行文件缩略图。 我已经在任务栏和窗口栏上设置了,但不在 exe 文件上。 (顺便说一句,我已经使用 Visual Studio 在 Windows 中完成了其中的 3 个。)
我可能不知道它的确切术语,所以我将展示下面的示例: enter image description here
我猜.rc 文件应该在makefile 中。 如果是这样,我也可以在 macOS 中解决它。 如果没有,我也想知道如何在 linux 和 macOS 中进行设置。 请让我知道如何使用它并设置它。提前致谢。
附言我使用 GLFWimage 在窗口栏和任务栏上设置图标并使用 openGL3 和 c++。
glfwSetWindowIcon(window, 1, &icon);
【问题讨论】:
【参考方案1】:我猜 .rc 文件应该在 makefile 中。
虽然在 Windows .exe
文件中存储图标有一种“标准化”方式,但对于“ELF”文件(Linux 下最常见的可执行文件格式)则没有这种方式。
在任务栏和窗口栏上
窗口管理器使用的图标(例如用于任务栏)通常存储为“X11 窗口属性”。 “X11 窗口属性”是程序分配给窗口的一些数据。
程序必须将图标图像作为数组提供并调用函数XChangeProperty()
(这是函数glfwSetWindowIcon()
间接执行的操作)。
图标没有必要以特殊方式存储(类似于Windows中的.rc
文件);程序可以简单地将图标存储在一些const
数组中,甚至可以在调用XChangeProperty()
之前计算图标图像数据。
...但不在 exe 文件上。
正如我已经写过的,没有“标准化”的方式将图标存储在 Linux 的可执行文件中。
一些文件管理器“知道”某些程序并显示相应的图标:他们知道“xterm”是一个终端程序,所以他们显示终端图标。但是,这个图标并不存储在可执行文件中,而是存储在文件管理器中:如果您将任何可执行文件重命名为“xterm”,则会显示终端图标。
有一个名为“elfres”的扩展(它在几年前被命名为“elficon”)允许将图标添加到 ELF 可执行文件。 The web site of that extension is found here. 在链接的网站上,您还可以找到 a screen shot with an example - 这样您就可以检查我是否理解正确,这就是您所说的。
很遗憾,这是一个非标准扩展。因此,“标准”Linux 安装不会检查可执行文件是否包含图标,因此不会显示图标。
如果使用“elfres”方式,必须安装专门的插件;否则不显示可执行文件的图标。
【讨论】:
以上是关于如何在 linux 系统的可执行文件上设置图标(或 .ico 文件)?的主要内容,如果未能解决你的问题,请参考以下文章
删除 Mac OS X 中 shell 可执行文件的停靠图标?
虚拟机Oracle VM VirtualBox linux系统如何访问windows共享文件夹
虚拟机Oracle VM VirtualBox linux系统如何访问windows共享文件夹