在处理dnsmasq代码时,要添加一个宏来隔开欺骗DNS请求的功能,而这个宏又需要是可配置的,即通过make menuconfig来进行配置,而MTK方案里面针对应用层和内核都有一个自动生成的配置文件,内核用"linux/autoconf.h" //kernel config 而应用层是用"config/autoconf.h"文件来保存当前打开的配置,而我在给dnsmasq.h文件包含autoconf.h文件时,一直报错,一直提示没有autoconf.h这个文件或是目录,导致在应用层打开的宏在dnsmasq代码中没有效果,而在其Makefile文件中将autoconf.h文件的绝对路径加入,仍然是提示没有找到文件的错误,后来查看其Makefile,在此文件中有一个-D 选项,网上一查,这个选项的作用是 在Makefile中添加宏定义来控制源程序的编译,那这可以达到我的目的了,那我只要在dnsmasq的Makefile文件中与我在应用层打开的配置相关联,这样就可以间接的来控制代码的编译了。
CFLAGS = -O2 -D__uClinux__ -DNO_GETTEXT
ifeq ("$(CONFIG_USER_FAKE_DNS)",
"y")
CFLAGS += -D FAKE_DNS
其上面的CONFIG_USER_FAKE_DNS是通过配置应用层的相关功能打开的宏,即通过make menuconfig
上面的意思是如果配置了USER_FAKE_DNS,那么就在dnsmasq中打开DNS欺骗功能。
在处理dnsmasq代码时,为实现可配置的欺骗DNS请求功能,需通过make menuconfig设置宏。但在MTK方案中,应用层和内核的配置文件不同,导致dnsmasq代码无法识别应用层的配置。通过在dnsmasq的Makefile中利用-D选项添加宏定义,可以关联应用层的配置,从而根据CONFIG_USER_FAKE_DNS宏决定是否开启DNS欺骗功能。
1755

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



