如何将g ++本身链接到我的项目?

时间:2016-06-26 13:52:41

标签: c++ linker g++ gnu ld


所以为了清楚起见,我的目标是编写一个代码,它可以保存自己代码的关键部分(比如主函数或其他类或类似的东西) 我将只是在一个类中复制它们,然后我希望我的程序使用用户输入添加/删除一些代码(func,obj,class,...)并且在所有这些之后我希望它再次重新生成该代码并且创建自动保存代码关键部分的类,我希望它编译并删除自己。

所以我已经完成了以上所有的计划和计算,除了我希望它编译该代码的部分,无论如何将g ++链接到我的代码?但我知道g ++有一个主要的功能,不会产生我的主要功能的问题? +我不能在现有系统上使用编译器,我不能将编译器作为单独的可执行文件......

1 个答案:

答案 0 :(得分:1)

您不需要使用编译器链接您的代码。您可以使用编译器打包您的可执行文件。您的代码可以生成C ++源代码,然后调用编译器生成新的可执行文件。

请记住,大多数编译器都很大。尝试在您的系统上安装G ++或MinGW以获得理解。

有关详细信息,请在互联网上搜索“编译器设计理论”,它将为您提供有关将C ++等语言翻译成可执行文件的信息。

此外,您需要让操作系统启动新的可执行文件(并终止当前实例)。这将对操作系统的API进行一些研究。

恕我直言,最好的方法是使用解释性或脚本语言。替代方法是让您的C ++程序执行脚本或脚本片段。

编辑1:非常低级别
在最低级别,需要生成微代码(处理器处理的命令字节)。

步骤如下:

  1. 生成微码并放置在内存中的某个已知位置 (您有权访问并具有执行权限。)
  2. 将执行转移到微码,记住要推回 堆栈上的地址。
  3. 困难的部分是生成微码,特别是调整所有分支指令的目标地址(除非你使用称为位置无关代码的东西)。

    您可能需要花费数月或数年时间编写生成微代码的代码,或者弄清楚如何使用编译器(如CLang或G ++)。