android 移植 arp命令,Arp-scan 移植到broadcom平台

这2天要移植Arp-scan到broadcom SDK上,由于对Configure

和Makefile不熟,所以弄的久一点,不过在别人的帮助下还是基本搞好了.

Arp-scan具体的用处不用多说,我们主要是想可以实时的刷新当前局域网内有哪些机子连接,这样可以判断连接的机子是不是还是活动状态.

开始由于对Makefile不熟,所以想直接编译出一个二进制的可执行文件然后直接放到板子上运行,其实我也知道这是个很不好的做法,因为以后换个平台的话就要再搞一遍.不过开始只是想编译出来,看能不能运行.

下载Arp-scan-1.8的压缩包,解压,这个时候没有Makefile,必须先./configure进行配置,如果不加任何参数的话,默认它会以PC平台来配置,当然这个时候会需要libpcap的依赖,在下载arp-scan的时候会有libpcap的包同时下载的,安装好pcap的话,configure就可以顺利进行.然后make.生成可执行文件,但是这生成arp-scan是不能在ARM平台运行的,那么我们就需要修改由configure生成的Makefile了,首先就是CC,也就是编译器,然后LDFLAGS以及CFLAGS,但是这边链接的libpcap的库和头文件必须你要知道在哪,必须是实体机的路径,而是工程目录编译时生成的库的路径,但是这样修改了不代表就OK了,因为开始我不知道原来每次make的时候,makefile里都会重行执行./configure的,所以即使修改了Makefile,如果重新编译,它会记住上一次执行configure时参数,然后Makefile被重写了,修改Makefile也没有意义了.

于是想到必须在./configure的时候就加上参数,这样即使在make阶段再次编译时不至于出错.

于是伴随的参数如下:./configure --host=arm-unknown-linux-uclibcgnueabi

CC="/opt/toolchains/crosstools-arm-gcc-4.6-linux-3.4-uclibc-0.9.32-binutils-2.21-NPTL/usr/bin/arm-unknown-linux-uclibcgnueabi-gcc"

LDFLAGS="-L/home/hayes/work/bcm_xxx/1501_2014-4-1/brcm-sdk-1501/bcmcpe2/targets/963138BGW/fs.build/public/lib"

CFLAGS="-I/home/hayes/work/bcm_xxx/1501_2014-4-1/brcm-sdk-1501/bcmcpe2/targets/963138BGW/fs.build/public/include

-I/home/hayes/work/bcm_xxx/1501_2014-4-1/brcm-sdk-1501/bcmcpe2/userspace/public/libs/libpcap/libpcap"

如上,host使用的是gcc的前缀,cc指定的是交叉编译器的绝对路径,LDFLAGS指定的是libpcap.so之类的库文件,CFLAGS的第一个链接是pcap.h的头文件所在的位置,第二个是libpcap所在的编译目录的绝对路径,当然最后这个我不确定是不是必须.

加上以上的参数编译以后还是会出错的,找不到pcap_open_live(),好像还是libpcap的问题,这个时候需要打开config.log来看一看,发现是

ld:

ssp无法链接,于是,打开configure文件,找到ssp_cc=yes,改为no,不过,我不确定这个ssp到底是做什么用的.再次编译后,做什么类型检查时出错,我是直接同样把configure里的检查的部分给注释掉了,后面还有个snprintf的检查出错,同样注释掉检查部分,这样终于配置configure通过了,可以生成Makefile了,直接在代码里使用make也能生成当前开发板可以使用的二进制文件了.

当然了,开头也说了,如果每次编工程时重新编译arp-scan的,我们也是需要指定configure的参数的,那么怎么做,就是将arp-scan的目录嵌套放到另外一个目录下,如:arp-scan/arp-scan-1.8/

在arp-scan里再写一个makefile,指定configure的配置信息,这是在我的broadcom平台上的.

EXE = arp-scan

CONFIGURE_ARGS+= \

--host=$(TOOLCHAIN_PREFIX) \

CC=$(CC) \

LDFLAGS="-L$(PROFILE_DIR)/fs.build/public/lib" \

CFLAGS="-I$(PROFILE_DIR)/public/include

-I$(BUILD_DIR)/userspace/public/libs/libpcap/libpcap"

install: $(EXE)

install -m 755 arp-scan-1.8/$(EXE) $(INSTALL_DIR)/bin/

$(EXE):

@echo "need to do configure arp-scan"

cd arp-scan-1.8; \

./configure $(CONFIGURE_ARGS); \

make

clean:

cd arp-scan-1.8; \

make clean

这边还有一个注意的,不知道是不是小白问题,我本来文件格式是arp-scan-1.8/arp-scan/xxx

的,然后这里的Makefile里写的是install -m 755

arp-scan/$(EXE) $(INSTALL_DIR)/bin/

,这个时候,每次编译的时候都认为arp-scan是最新的,而没有实际执行将二进制文件拷贝的bin目录下,因为arp-scan是一个目录.

总之这可能是一个简单的事情,贴出来希望对别人有一点帮助.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值