从C程序构建新的二进制文件

问题描述 投票:1回答:2

我正在使用C程序,它是一个自定义外壳,要求用户设置不同的选项(IP,端口,...),然后允许用户根据这些信息构建二进制文件。我想知道从现有程序中构建新二进制文件的最佳方法是什么?

编辑:我的问题可能不清楚。新的编译二进制文件是一个简单的TCP客户端,它将连接到指定的IP和端口。我不希望这个新的二进制文件依赖于配置文件。如何从现有的C程序构建它?我应该将IP和端口写入.c文件,然后使用system("/bin/gcc ...")进行编译吗?

c compilation binary
2个回答
1
投票

我认为您正在描述代码生成并以编程方式编译新的可执行文件。有许多方法可以完成您描述的操作。这是一组非常简单(非常粗略的草稿)的代码生成和编译步骤:

1)使用现有程序中的printf, fgets calls提示用户输入一组特定的输入值2)如有必要,转换命令行数字输入值。 (例如,使用atoi()或strtod())3)打开一个文件进行写入(例如FILE * fp = fopen(filespec,“ w”);)4)使用fputs(),向由C源文件组成的文件发送一系列行,包括来自用户输入的步骤1&2的值。例如。 fputs("#include _some file_", fp);(和其他所需的头文件)例如fputs("int main(int argc, char *argv[]) {", fp);fputs(...)(其余所有行组成完整的用户定义代码。)fputs("return 0; }", fp);5)关闭文件:fclose(fp);6)在您刚创建的文件的命令行上构造一个gcc command line compile string。7)使用popen()(如果有)或system()或使用Windows,例如this将命令发送到OS,在命令行上执行gcc(或其他编译器)以创建您的可执行文件。


0
投票

如果您在C语言中具有就绪代码,则所有选项(例如ip或其他参数,例如,写入到另一个文件userdata.c


#include "userdata.h"

unsigned char IP[4] = {212,34,56,78};
const char IPstring[] = "212.34.56.78";
const char DNSIPstring[] = "4.4.4.4";
const char defaultGatewayIPstring[] = "212.34.56.1";
/* etc etc */

和userdata.h

#ifndef USERTATA_H
#define USERTATA_H
extern unsigned char IP[];
extern const char IPstring[];
extern const char DNSIPstring[];
extern const char defaultGatewayIPstring[];
/* etc etc */
#endif

在主程序文件中,仅包括.h文件。不要忘记也编译并链接.c文件:)

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.