学习rust系列:2、编译一个rust项目capture-dns

346 阅读2分钟

capture-dns是依云仙子用rust写的抓本地网络请求的DNS信息的

地址:github.com/lilydjwg/ca…

1、deepin下搭建环境

还是上:rustup.rs

也可以直接执行:curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

然后选择1就可以了

安装完成后,关闭Terminal,打开一个新的,执行rustc -Vcargo -V 。 能看到对应的版本号,就是正常的

2、clone项目 clone之前安装好git

deepin系统的git安装

第一步:sudo apt-get update

第二步:sudo apt-get install git

第三步:git clone https://github.com/lilydjwg/capture-dns.git

3、编译依赖 这个项目需要依赖pcap,然后依赖libpcap.so,编译libpcap.so文件去官网( www.tcpdump.org/ )找到对应的github项目,直接clone下来编译

git clone https://github.com/the-tcpdump-group/libpcap

下载后,进入目录,执行./configure发现缺少依赖,执行sudo apt-get install flex bison,安装完成

再次执行./configure,配置通过,然后就make make install

这时候如果直接去项目capture-dns下执行cargo build还是会报错

这里需要将编号的libpcap.so文件所在目录/usr/local/lib,添加到/etc/ld.so.conf

vim /etc/ld.so.conf

编辑完成执行ldconfig即可

4、编译项目

在capture-dns根目录执行,cargo build,没出现异常,去找编译结果

target/debug/capture-dns 就是了

5、测试

查看网卡:ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:92:cc:dd brd ff:ff:ff:ff:ff:ff
    altname enp2s5
    inet 192.168.1.128/24 brd 192.168.1.255 scope global dynamic noprefixroute ens37
       valid_lft 81271sec preferred_lft 81271sec
    inet6 240e:328:27ae:bc00:692a:b9cc:44dd:4c8c/64 scope global dynamic noprefixroute 
       valid_lft 232448sec preferred_lft 146048sec
    inet6 fe80::be6a:501a:7fdd:57cc/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

执行命令 target/debug/capture-dns ens37

然后刷新网页访问,就可以看到了dns数据