A.编译前的调教
在日常的C语言工程中,常常需要针对不同的平台、环境做不同类型的软件。最基本的,不同的操作系统(ISA),不同的device(协议、接口),不同的引擎(开发环境等),对应的实际代码完全不同。这一类兼容性开发,比较常见的方式就是Kconfig配置。
可以使用mconf工具和conf工具对简易编写的Kconfig文件进行环境变量的配置,用mconf的binary程序读取Kconfig文件后,生成的.config文件由conf的binary产生宏展开文件(例如autohead.h这样的文件)将用户选择好的配置文件变量导入到即将开始的binay编译中。makefile将会针对对应的配置文件信息有选择的编译对应环境下的C语言binary,实现调教。
B.编译后的调教
C语言的主函数比较标准格式为
int main(int argc, char * argv[]){
exe();
return 0;
}
这里的argc表示执行binary时输入的指令数目,argv表示执行binary时的各条指令内容。一般从命令行运行某程序时,直接输入对应路径下的对应文件名就可以了。如是如此的话,argc就是1,argv[0]就是一个表示对应路径/对应文件的字符串。
但有时候,我们需要在单纯执行主程序之外还加入一些其他的因素。比如在主程序的执行同时对其进行监控(即状态信息的打印)。
这个时候,就可以使用getopt()家族了。这一函数族可以针对命令行执行时的输入指令不同执行不同类型的命令。
getopt(argc,argv,format,table)将会返回一个int告诉你是否存在对应table内的指令类型,并通过optarg参数来指代对应指令下的argv具体的内容。
本文介绍了C语言项目中如何通过Kconfig配置实现编译前的兼容性开发,并利用getopt函数族实现在编译后根据命令行参数调整程序行为。

被折叠的 条评论
为什么被折叠?



