构建

有多种构建或编译 Android tcpdump 的方法。下面概述的方法是我们用来构建 Android tcpdump二进制文件的方法,您可以在我们的下载部分找到它。您也可以尝试使用来自 GoogleNDK。NDK 使用一组不同的库、工具链和编译工具。

我们在下载部分提供的tcpdump是使用一种称为交叉编译的方法编译的。交叉编译是一种在另一个操作系统上编译一个操作系统二进制文件的方法。在我们的例子中,我们正在Ubuntu Linux系统上交叉编译Android二进制文件,目标是ARM架构。创建二进制文件或程序后,它只能在目标操作系统上运行。因此二进制文件只能在运行在 ARM 架构上的 Android 设备上运行。

旁注:架构可以是 ARM、i386 或 MIPS。市场上 95% 的 Android 都使用 ARM 架构,因此您将在我们的下载中找到的二进制文件适用于 ARM 架构。此外,我们只能访问具有 ARM 架构的设备,因此我们无法确认为其他架构编译的二进制文件是否有效。如果您希望我们为 i386 或 MIPS 编译二进制文件,请在我们的联系页面中告知我们,以便我们做出适当的安排。

Ubuntu 编译工具

要安装我们使用的编译工具和工具链,请在您的 Ubuntu Linux 服务器上执行以下命令:

要编译 32 位版本,您需要以下 gcc 编译器:

sudo apt-get install gcc-arm-linux-gnueabi

要编译 64 位版本,您需要以下 gcc 编译器:

apt-get install gcc-aarch64-linux-gnu

您可能还需要以下依赖项:

sudo apt-get install byacc
sudo apt-get install flex

注意:您只需要在您的系统上安装上述编译工具一次。

编译Android tcpdump的步骤

    1. http://www.tcpdump.org下载最新的tcpdump源代码。在这种情况下,我们将编译最新版本 tcpdump-4.99.1。

wget http://www.tcpdump.org/release/tcpdump-4.99.1.tar.gz

    1. 由于 tcpdump 依赖于 libpcap,我们也需要下载它。从http://www.tcpdump.org下载最新的 libpcap 源代码

wget http://www.tcpdump.org/release/libpcap-1.10.1.tar.gz

    1. 将源代码解压到相应的目录中。

tar zxvf tcpdump-4.99.1.tar.gz
tar zxvf libpcap-1.10.1.tar.gz

    1. 导出编译器以指向 ARM Linux 构建工具。注意:默认情况下,这些库在您的 linux 操作系统上可能不可用。您可能需要“yum”或“apt-get”适当的构建库或工具链。对于 32 位,您需要:

export CC=arm-linux-gnueabi-gcc

    1. 对于 64 位编译,您将需要:

export CC=aarch64-linux-gnu-gcc

    1. 我们需要先编译LIBPCAP。将目录更改为解压缩 LIBPCAP 的位置

cd libpcap-1.10.1

    1. 使用几个开关执行 LIBPCAP 附带的配置文件。“--host=arm-linux”告诉编译器我们正在交叉编译到ARM。“--with-pcap=linux”将告诉编译器我们正在编译哪种数据包捕获类型。

./configure --host=arm-linux --with-pcap=linux

    1. 然后执行“make”命令。这应该会创建 libpcap 库。

make

    1. 现在,将目录更改为提取 TCPDUMP 文件的位置

cd tcpdump-4.99.1

    1. 我们需要找出我们的 Ubuntu(或 Linux)操作系统内核正在运行的主要版本。执行 uname -a 命令。注意:您的输出可能会有所不同,但请查找类似于版本号的内容。下面,我的是 2.6.32-042stab094.8。我们抓住第一个“2”。

uname -a

上述命令产生以下输出:
Linux androidtcpdump 2.6.32-042stab094.8 #1 SMP Tue Dec 16 20:36:56 MSK 2014 i686 i686 i686 GNU/Linux

    1. 将 ac_cv_linux_vers 变量设置为上一个命令中发布的内核版本的主要编号。

export ac_cs_linux_vers=2

    1. 导出编译所需的以下变量。由于我们希望可执行文件是自包含的(即不依赖于外部库,因此我们提供了以下标志来静态构建它。

export CFLAGS=-static
export CPPFLAGS=-static
export LDFLAGS=-static

    1. 使用几个开关执行 TCPDUMP 附带的配置文件。“--host=arm-linux”告诉编译器我们正在交叉编译,“--disable-ipv6”告诉编译器禁用 IP 版本 6。

./configure --host=arm-linux --disable-ipv6

    1. 执行“制作”命令。这将构建 tcpdump 二进制文件。

make

    1. 剥离符号信息,使二进制文件更小。这些符号仅在调试应用程序时有用。对于 32 位:

arm-linux-gnueabi-strip tcpdump

    1. 对于 64 位:

aarch64-linux-gnu-strip tcpdump

  1. 完毕。您完成的二进制文件应该在您的 tcpdump 目录中。

多合一脚本(32 位)

下面是一个简单的脚本中列出的所有步骤。您只需要更改“ac_cv_linux_vers”变量中的版本信息和您的 linux 内核版本

export TCPDUMP=4.99.1
export LIBPCAP=1.10.1

wget http://www.tcpdump.org/release/tcpdump-$TCPDUMP.tar.gz
wget http://www.tcpdump.org/release/libpcap-$LIBPCAP.tar.gz

tar zxvf tcpdump-$TCPDUMP.tar.gz
tar zxvf libpcap-$LIBPCAP.tar.gz
export CC=arm-linux-gnueabi-gcc
cd libpcap-$LIBPCAP
./configure --host=arm-linux --with-pcap=linux
make
cd ..

cd tcpdump-$TCPDUMP
export ac_cv_linux_vers=2
export CFLAGS=-static
export CPPFLAGS=-static
export LDFLAGS=-static

./configure --host=arm-linux --disable-ipv6
make

arm-linux-gnueabi-strip tcpdump

多合一脚本(64 位)

下面是一个简单的脚本中列出的所有步骤。您只需要更改“ac_cv_linux_vers”变量中的版本信息和您的 linux 内核版本

export TCPDUMP=4.99.1
export LIBPCAP=1.10.1

wget http://www.tcpdump.org/release/tcpdump-$TCPDUMP.tar.gz
wget http://www.tcpdump.org/release/libpcap-$LIBPCAP.tar.gz

tar zxvf tcpdump-$TCPDUMP.tar.gz
tar zxvf libpcap-$LIBPCAP.tar.gz
eport CC=aarch64-linux-gnu-gcc
cd libpcap-$LIBPCAP
./configure --host=arm-linux --with-pcap=linux
make
cd ..

cd tcpdump-$TCPDUMP
export ac_cv_linux_vers=2
export CFLAGS=-static
export CPPFLAGS=-static
export LDFLAGS=-static

./configure --host=arm-linux --disable-ipv6
make

aarch64-linux-gnu-strip tcpdump

你完成了。

现在你有了我们用来构建 android tcpdump的指令。但是有编译/构建的替代方法。如果您无法访问 Linux 系统,或者遇到编译困难,您可以随时从我们的下载区域下载最新版本。就这么简单。

如何交叉编译安卓tcpdump的更多相关文章

  1. [COCOS2DX]交叉编译实践+速度优化(vs2012修改win32代码+修改makefile+编译安卓项目包+部署安卓项目包到Eclipse+运行apk)

    通过前面的部署过程可以知道cocos2dx的开发过程如下: 1.VS2012完成修改 2.因为指定了CPP文件位置,ndk可以通过jni方式完成C++文件的编译,运行以下命令完成proj.androi ...

  2. 交叉编译 tcpdump

    目录 1. 下载 tcpdump 2. 交叉编译 3. 相关说明 1. 下载 tcpdump 官网:http://www.tcpdump.org/ 2. 交叉编译 交叉编译libpcap: $ wge ...

  3. tcpdump我的交叉编译(mips)

    一.libpcap交叉编译 1.下载libpcap-1.8.1(http://www.tcpdump.org/) 2.解压 3.修改configure文件 a.注释掉 #if test -z &quo ...

  4. cocos2dx 3.1.1移植安卓apk (lua项目交叉编译 mac环境下)

    cocos2dx 3.1.1 lua项目安卓交叉编译 mac环境下 本文基于ant,sdk,ndk,adt等软件和环境已经事前设置好 1\新建项目 在mac的终端下输入命令: cocos new te ...

  5. cocos2d-x交叉编译到安卓

    ccocos2d-x是一个基于MIT协议的开源框架,用于构建游戏.应用程序和其它图形界面交互应用. 它的最大特点就是跨平台性,支持IOS, Android.Windows, WindowsPhone等 ...

  6. aarch64 架构 交叉编译 tcpdump

    1. 下载 tcpdump 源码 地址 :http://www.tcpdump.org/    (4.9.2) tcpdump 依赖 libpcap  源码 地址 : http://www.tcpdu ...

  7. tcpdump交叉编译及使用

    第一步.下载 官方网站:http://www.tcpdump.org/ 需要下载libpcap包和tcpdump包 我下载的版本是:libpcap-1.4.0.tar.gz和tcpdump-4.4.0 ...

  8. tcpdump 交叉编译

    1下载源码:http://www.tcpdump.org/release/ libpcap-1.4.0.tar.gz tcpdump-4.4.0.tar.gz export PATH=/opt_gcc ...

  9. Wireshark-配合tcpdump对Android(安卓)手机抓包

    环境:Windows, 安装真机(可以获取Root权限), adb, Wireshark, tcpdump 原理: 使用 tcpdump 进行抓包, 然后用 Wireshark 进行分析 1.获取手机 ...

  10. 安卓手机tcpdump的使用

    一.常规操作步骤 1. 手机要有root权限 2. 下载tcpdump http://www.strazzere.com/android/tcpdump 3. adb push c:\wherever ...

随机推荐

  1. 08Java基础之面向对象

    面向过程&面向对象 面向过程思想 步骤清晰简单,第一步做什么,第二步做什么 面向过程适合处理一些较为简单的问题 面向对象思想 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后 ...

  2. Tomcat Filter过滤器责任链模式,过滤器拦截器区别?

    1.责任链模式:将⼀个事件处理流程分派到⼀组执⾏对象上去,这⼀组执⾏对象形成⼀个链式结构,事件处理请求在这⼀组执⾏对 象上进⾏传递. 2.过滤器和拦截器: 1.过滤器filter:是在java web ...

  3. 5.7 Global对象

    5.7 Global对象 encodeURI encodeURIComponent decodeURI decodeURIComponent 用特殊的utf-8编码替换所有无效的字符,从而让浏览器能理 ...

  4. 通过AssemblyLoadContext 卸载清空Roslyn动态编译缓存数据

    一.前言 前段时间更新发布了dotnetty,内存泄漏问题得到了修复,而后分析dump发现,还有Roslyn动态编译缓存数据没有得到回收,通过统计有5mb左右,这个占比可是整个项目的1/10, 然后通 ...

  5. 利用模型上下文协议增强生成式AI解决方案 - 第1部分

    当今企业日益依赖AI驱动应用来增强决策.优化流程并提升客户体验.实现这些目标需要安全.及时且准确地访问权威数据--尤其是当这些数据分散在企业严格安全边界内的不同存储库和应用中时. 基于开放标准(如模型 ...

  6. MyEMS能源管理系统后台配置-传感器管理

    MyEMS开源能源管理系统适用于建筑.工厂.商场.医院.园区的电.水.气等能源数据采集.分析.报表,还有光伏.储能.充电桩.微电网.设备控制.故障诊断.工单管理.人工智能优化等可选功能. 本文介绍My ...

  7. 【渲染流水线】[几何阶段]-[顶点着色]以UnityURP为例

    作用‌:处理模型顶点数据(坐标.法线.UV),输出裁剪空间位置(如顶点的MVP矩阵转换顶点从模型空间到裁剪空间). 裁剪空间‌:MVP变换的终点,顶点坐标未归一化,需保留w分量用于深度计算‌ ‌可配置 ...

  8. vLLM框架:LLM推理的高效机制

    vLLM框架:大语言模型推理的高效机制 vLLM(Virtual Large Language Model)是由加州大学伯克利分校团队开发的高性能大模型推理框架,通过创新的显存管理和调度策略,解决了传 ...

  9. 记一次 .NET 某企业审批系统 崩溃分析

    一:背景 1. 讲故事 今年年初有位朋友在微信上找到我,说他们的系统在客户这边崩掉了,在代码中也加了全局异常处理但还是崩,不知道咋回事,让朋友在客户那边拿程序dump,拿到dump之后开始分析. 二: ...

  10. 使用Process Explorer/Process Hacker和Windbg高效排查软件高CPU占用问题

    https://blog.csdn.net/chenlycly/article/details/134180480