【问题标题】:What's the entry point of GUI program in linux?linux中GUI程序的入口点是什么?
【发布时间】:2011-10-08 01:20:01
【问题描述】:

在 Windows 中是WinMain

在 linux 中是什么?

还是还是main

【问题讨论】:

  • 你使用的是什么 GUI 库?
  • 这取决于库......以及您使用的 linux 构建/发行版。

标签: linux user-interface


【解决方案1】:

Windows PE(可移植可执行文件)格式在标头中有一个标志,表明可执行文件是 console 还是 windowed。根据具体情况,Windows 是否会为应用程序分配控制台窗口。这也决定了入口点是main还是WinMain

Linux ELF 格式没有类似的标志。入口点始终是main。 “控制台窗口”的概念在 Linux 中完全不同。

(请注意,以上内容在一定程度上简化了问题,因为您所说的入口点是 user 代码开始的地方。编译器/链接器总是提供一些运行时库启动代码,这些代码在之前运行你的用户入口点被调用,这是真正的入口点。)

【讨论】:

    【解决方案2】:

    这完全取决于您使用的 GUI 库。 C program 的入口点(在托管模式下)始终是 main (通常,它在 C 启动代码中,它配置事物然后调用 main ,这是 您的代码启动。

    某些环境会提供自己的 main 版本,以便在调用您的代码之前进行设置。但是,QtKDE(作为两个示例)仍然使用 main,并且需要您自己设置环境。

    【讨论】:

      【解决方案3】:

      是的,它总是 main()。

      Linux 本身并不区分 GUI 程序和非 GUI 程序。它在可执行文件中没有标记“这是一个控制台应用程序”或“这是一个窗口应用程序”。

      严格来说,入口点不是main(),而是_start什么的。但是,如果您要链接到标准 C 库或它的某些变体,则按照 C 语言的约定,它往往是 main()。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-30
        • 2012-09-24
        • 2015-12-24
        • 2022-08-03
        • 2023-04-07
        • 1970-01-01
        相关资源
        最近更新 更多