当前位置: 首页 > news >正文

宣威市住房和城乡建设局网站下载中心b站2023推广网站

宣威市住房和城乡建设局网站下载中心,b站2023推广网站,wordpress添加购买按钮,个人网页制作系统在Linux系统下Makefile和C/C语言都有提供条件选择编译的语法,就是在编译源码的时候,可以选择性地编译指定的代码。这种条件选择编译的使用场合有好多,例如我们开发一个兼容标准版本与定制版本兼容的项目,那么,一些与需…

在Linux系统下Makefile和C/C++语言都有提供条件选择编译的语法,就是在编译源码的时候,可以选择性地编译指定的代码。这种条件选择编译的使用场合有好多,例如我们开发一个兼容标准版本与定制版本兼容的项目,那么,一些与需求密切相关的代码,就需要进行选择性编译;再比如我们开发一个兼容windows系统和Linux系统运行的项目,那么,一些与操作系统密切相关的代码,就需要进行选择性编译。在这篇文章就简单地讲一下基于Linux系统下通过Makefile实现条件选择编译的方法,下面将以两个功能模块module1,module2之间的条件选择编译为例子。

1.首先,在Linux目录下创建一个名为“proj”的目录。运行指令:mkdir -p proj

2.在该目录下依次创建如下文件:

module1.c内容如下所示:

#include<stdio.h>
#include<stdlib.h>void module_1_func()
{printf("run module 1\n");
}

module2.c内容如下所示:

#include<stdio.h>
#include<stdlib.h>void module_2_func()
{printf("run module 2\n");
}

main.c内容如下所示:

#include<stdio.h>
#include<stdlib.h>void main()
{printf("start test demo!\n");printf("start module1 demo!\n");module_1_func();printf("start module2 demo!\n");module_2_func();
}

Makefile内容如下所示:

include ./config
CPROG    = test
BIN     = $(CPROG) 
CC= gcc
OBJS=main.o module1.o module2.oall: $(BIN) 
clean:rm -f $(OBJS) $(BIN)
$(BIN): $(OBJS)$(CC)  -o $(BIN) $(OBJS)   $(CFLAGS) $(LDFLAGS) $(CFLAGS_EXTRA)

3.使用“make clean;make”编译之后生成一个名为“test”的可执行文件,运行这个可执行文件,结果如下图所示:

4.在当前目录下新增一个名为”config”的配置文件,在这个文件加入module1和module2的控制开关,内容如下所示(默认module1,module2功能模块关闭):

CONFIG_MODULE1=n
CONFIG_MODULE2=n

修改Makefile,内容如下:

#包含当前目录下的config文件
include ./config
CPROG    = test
BIN     = $(CPROG) 
CC= gcc
OBJS=main.o#新增module1编译选项的条件判断
ifeq ($(CONFIG_MODULE1),y)
CFLAGS += -DHAVE_MODULE1
OBJS+=module1.o
endif
#新增module2编译选项的条件判断
ifeq ($(CONFIG_MODULE2),y)
CFLAGS += -DHAVE_MODULE2
OBJS+=module2.o
endifall: $(BIN) 
clean:rm -f $(OBJS) $(BIN)
$(BIN): $(OBJS)$(CC)  -o $(BIN) $(OBJS)   $(CFLAGS) $(LDFLAGS) $(CFLAGS_EXTRA) 

修改main.c,内容如下所示:

#include<stdio.h>
#include<stdlib.h>void main()
{printf("start test demo!\n");
#ifdef HAVE_MODULE1printf("start module1 demo!\n");module_1_func();
#endif#ifdef HAVE_MODULE2printf("start module2 demo!\n");module_2_func();
#endif
}

5.修改config文件,并进行多次编译运行测试。

CONFIG_MODULE1=y

CONFIG_MODULE2=y

CONFIG_MODULE1=n

CONFIG_MODULE2=y

CONFIG_MODULE1=y

CONFIG_MODULE2=n

CONFIG_MODULE1=n

CONFIG_MODULE2=n

由以上一系列测试可知,通过修改”config”配置文件,可以很方便的根据不同的需求实现对代码进行条件编译。

总结:

条件编译使得我们可以按不同的条件编译不同的代码段,通过编译器命令行能够定义预处理器使用的宏,因而可以产生不同的目标代码,不仅可以根据需求对代码进行裁剪,缩小目标文件的体积,与此同时也可以将代码移植到不同的平台或不同的操作系统,提高软件开发效率。

http://www.mmbaike.com/news/40417.html

相关文章:

  • 做外贸方面的网站seoshanghai net
  • 江苏网站建设机构举一个网络营销的例子
  • 教育培训网站源码 模板 php培训机构网站源码培训学校网站源码百度推广官网
  • 时彩网站开发亿郑州网站建设公司排行榜
  • 苹果电脑 做网站万能bt搜索引擎
  • 党员网站管理系统百度青岛代理公司
  • 做全国社保代理的网站百度推广登录账号首页
  • 可以用服务器做网站广告制作
  • 制作收款网站推广网站
  • 做 视频在线观看网站郑州seo哪家专业
  • 网站怎么做最吸引人大数据智能营销系统
  • 济南网站建设有限公司重庆高端seo
  • 文化传播公司网站建设需求考研培训机构排名
  • 网站 参数北京网站建设运营
  • 又一个wordpress百度seo排名软
  • 电商网站建设会计分录深圳经济最新新闻
  • 昆山高端网站建设咨询app推广渠道有哪些
  • 网站制作好以后怎么管理免费网站推广网站短视频
  • 网站可以做匿名聊天吗今日头条新闻最新消息
  • 安阳市建设工程领域网站上海seo网络优化
  • 建设手机网站赚钱吗东莞网络排名优化
  • 做网站客户要提供什么5118
  • 做网站工资高吗成都网站制作
  • 企业网站开发实训过程与内容网上销售平台有哪些
  • 牡丹江 网站建设搜索引擎优化排名工具
  • 企业建站官网营销网站案例
  • 南宁网站推广¥做下拉去118crseo技术教学视频
  • 有做教育行业的招聘网站吗网络口碑营销案例
  • 东莞网站建设 石佳百度网址大全旧版本
  • 学校网站建设的意义的主要负责人站长工具pr值查询