【问题标题】:simple IDE in C,link my program to gccC中的简单IDE,将我的程序链接到gcc
【发布时间】:2011-01-05 13:48:48
【问题描述】:

我想写一个简单的 C IDE,我写了它的一些部分。 它可以检查C的语法,现在我需要将我的程序链接到gcc,以制作可执行文件。 现在我的程序可以获取您输入的内容,然后将其保存为任何格式(如记事本) 现在我想说 g++ 来制作可执行文件,我该怎么做? (例如)当用户保存他/她的文件然后在我的程序中键入“编译它”时,g++ 执行此操作并将可执行文件保存在程序需要或显示错误的位置。 我该怎么做? 我想为 Windows 操作系统编程。

【问题讨论】:

  • 有人帮我们翻译这个吗?我不确定到底是什么问题。
  • 根据您的描述,您不是在编写编译器,而是在编写 gcc 包装器。虽然不清楚您使用的是什么语言或平台,但这些信息可能会帮助其他人帮助您。
  • 您是在编写编译器(获取 C 文件,生成 EXE 文件)还是 IDE(如记事本,允许编写 C 文件,然后调用 gcc 将其转换为 EXE)?
  • 如前所述,IDE != compiler != 使用现有的编译器。请修正您的术语,这非常令人困惑。

标签: c++ c gcc compiler-construction


【解决方案1】:

您不需要“链接”到 gcc,而是在子进程中调用它。这通常使用 fork() 和 exec() 完成,向 gcc 提供完整的命令行,以便它知道要编译什么、如何编译以及将对象或可执行文件结果存储在哪里。

你没有提到你的操作系统,但正如你提到的 gcc 我会假设 Linux;看看这个tutorial,还有更多。

【讨论】:

  • 感谢您的回答,我认为它是一个很好的开始,但我应该为 windows 做什么,我正在尝试在 windows 中编程,无论如何谢谢
  • 啊好吧,我不太确定什么时候用cygwin? - 它可能会提供 fork()/exec() 调用供您使用。如果您使用的是 Microsoft 编译器(随 WinSDK 免费提供,顺便说一句),那么您将使用 Win32 API 调用 CreateProcess() 系列调用。
  • CreateProcess() 的?这是来自互联网的一个:daycounter.com/LabBook/Windows-CreateProcess.phtml。但是,如果您使用的是 gcc,那么我不确定 CreateProcess() 是否正确 - cygwin 至少可以说是一个非常规的环境。
  • Cygwin 确实提供了一个半途而废的 fork()。然而,它又慢又笨重,而且由于 Windows 本身不是分叉的,因此涉及到一些技巧(可能还有一些陷阱)。 CreateProcess(...) 在 Windows 应用程序中会更好。
【解决方案2】:

GCC 只能从 shell 调用,对于 IDE 中的编译器功能,请查看 libclang 项目:

http://llvm.org/devmtg/2010-11/Gregor-libclang.pdf

【讨论】:

    猜你喜欢
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    相关资源
    最近更新 更多