Skip to content

Commit 4881d3d

Browse files
Merge pull request #1 from seladb/master
Update build scripts to support the latest Android NDK versions
2 parents cbaaba0 + e514e8a commit 4881d3d

File tree

6 files changed

+98
-165
lines changed

6 files changed

+98
-165
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
tcpdumpbuild*/**
2+
venv/**

README.md

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,12 @@ Precompiled Tcpdump binaries for Android are provided for ARM, ARM64, X86, X86-6
55
```
66
Tcpdump version: 4.9.2
77
Libpcap version: 1.9.0
8-
Android API: 23
9-
NDK: android-ndk-r18b
8+
Default android API: 23
109
```
1110

1211
## Compilation Steps
1312

14-
1. Download the Android NDK from https://developer.android.com/ndk/downloads/. The latest available at the time of writing is `ndk-r18b`.
13+
1. Download the Android NDK from https://developer.android.com/ndk/downloads/.
1514
Extract the zip to a suitable location.
1615

1716
```
@@ -27,10 +26,10 @@ NDK: android-ndk-r18b
2726
2827
3. For compiling, set `NDK` to the location of the android sdk directory and run the corresponding build script.
2928
```
30-
$ NDK=/home/ubuntu/workspace/android-ndk-r18b/ ./build_x86.sh
31-
$ NDK=/home/ubuntu/workspace/android-ndk-r18b/ ./build_x86_64.sh
32-
$ NDK=/home/ubuntu/workspace/android-ndk-r18b/ ./build_arm.sh
33-
$ NDK=/home/ubuntu/workspace/android-ndk-r18b/ ./build_arm64.sh
29+
$ NDK=/home/ubuntu/workspace/android-ndk-rxxx/ ./build_x86.sh
30+
$ NDK=/home/ubuntu/workspace/android-ndk-rxxx/ ./build_x86_64.sh
31+
$ NDK=/home/ubuntu/workspace/android-ndk-rxxx/ ./build_arm.sh
32+
$ NDK=/home/ubuntu/workspace/android-ndk-rxxx/ ./build_arm64.sh
3433
```
3534
3635
4. Compiled binaries will be located in the corresponding `tcpdumpbuild` directory.

build_arm.sh

100644100755
Lines changed: 27 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,30 @@
33
tcpdump_ver=4.9.2
44
libpcap_ver=1.9.0
55
android_api_def=23
6-
toolchain_arch=arm
7-
toolchain_dir=toolchain_arm
8-
ndk_dir_def=android-ndk-r18b
6+
toolchain_arch=armv7a
7+
toolchain_dir=toolchain_armv7a
98

109
#-------------------------------------------------------#
1110

1211
tcpdump_dir=tcpdump-${tcpdump_ver}
1312
libpcap_dir=libpcap-${libpcap_ver}
1413

1514

15+
exit_error()
16+
{
17+
echo " _______"
18+
echo "| |"
19+
echo "| ERROR |"
20+
echo "|_______|"
21+
exit 1
22+
}
23+
1624
if [ ${NDK} ]
1725
then
1826
ndk_dir=${NDK}
1927
else
20-
ndk_dir=${ndk_dir_def}
28+
echo Please specify NDK path
29+
exit_error
2130
fi
2231

2332
ndk_dir=`readlink -f ${ndk_dir}`
@@ -35,16 +44,6 @@ echo "NDK - ${ndk_dir}"
3544
echo "Android API: ${android_api}"
3645
echo "_______________________"
3746

38-
39-
exit_error()
40-
{
41-
echo " _______"
42-
echo "| |"
43-
echo "| ERROR |"
44-
echo "|_______|"
45-
exit 1
46-
}
47-
4847
{
4948
if [ $# -ne 0 ]
5049
then
@@ -69,38 +68,22 @@ exit_error()
6968
echo "| TOOLCHAIN |"
7069
echo "|____________________|"
7170

72-
if [ -d "$toolchain_dir" ]
73-
then
74-
echo Toolchain already exist! Nothing to do.
75-
else
76-
echo Creating toolchain...
77-
mkdir $toolchain_dir
78-
python ${ndk_dir}/build/tools/make_standalone_toolchain.py \
79-
--arch=${toolchain_arch} \
80-
--api=${android_api} \
81-
--install-dir=${toolchain_dir} \
82-
--force
83-
84-
if [ $? -ne 0 ]
85-
then
86-
rm -fr $toolchain_dir
87-
exit_error
88-
fi
89-
fi
71+
toolchain_dir=$ndk_dir/toolchains/llvm/prebuilt/linux-x86_64
72+
export sysroot=$toolchain_dir/sysroot
73+
export PATH=$toolchain_dir/bin:$PATH
9074

91-
export PATH=`pwd`/$toolchain_dir/bin:$PATH
92-
93-
target_host=arm-linux-androideabi
94-
export AR=$target_host-ar
95-
export AS=$target_host-clang
96-
export CC=$target_host-clang
97-
export CXX=$target_host-clang++
75+
target_host=armv7a-linux-androideabi
76+
target_host_with_api=$target_host$android_api
77+
export AR=llvm-ar
78+
export AS=$target_host_with_api-clang
79+
export CC=$target_host_with_api-clang
80+
export CXX=$target_host_with_api-clang++
9881
export LD=$target_host-ld
9982
export STRIP=$target_host-strip
100-
export RANLIB=$target_host-ranlib
83+
export RANLIB=arm-linux-androideabi-ranlib
10184
export STRIP=$target_host-strip
102-
export CFLAGS="-static -O2 -fPIE -fPIC -march=armv7-a -mthumb -mfloat-abi=softfp -mfpu=vfpv3-d16 -mfpu=neon"
103-
export LDFLAGS="-pie"
85+
export CFLAGS="-static -O2 -fPIE -fPIC -march=armv7-a -mthumb -mfloat-abi=softfp -mfpu=vfpv3-d16 -mfpu=neon --sysroot=$sysroot"
86+
export LDFLAGS="-pie --sysroot=$sysroot"
10487
}
10588

10689
# download & untar libpcap + tcpdump
@@ -166,7 +149,7 @@ exit_error()
166149
echo "|_____________________|"
167150

168151
chmod +x configure
169-
./configure --host=arm-linux-androideabi --with-pcap=linux
152+
./configure --host=armv7a-linux-androideabi --with-pcap=linux
170153

171154
if [ $? -ne 0 ]
172155
then
@@ -199,7 +182,7 @@ exit_error()
199182
echo "|_____________________|"
200183

201184
chmod +x configure
202-
./configure --host=arm-linux-androideabi --with-pcap=linux
185+
./configure --host=armv7a-linux-androideabi --with-pcap=linux
203186

204187
if [ $? -ne 0 ]
205188
then

build_arm64.sh

100644100755
Lines changed: 21 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,28 @@ libpcap_ver=1.9.0
55
android_api_def=23
66
toolchain_arch=arm64
77
toolchain_dir=toolchain_arm64
8-
ndk_dir_def=android-ndk-r18b
98

109
#-------------------------------------------------------#
1110

1211
tcpdump_dir=tcpdump-${tcpdump_ver}
1312
libpcap_dir=libpcap-${libpcap_ver}
1413

1514

15+
exit_error()
16+
{
17+
echo " _______"
18+
echo "| |"
19+
echo "| ERROR |"
20+
echo "|_______|"
21+
exit 1
22+
}
23+
1624
if [ ${NDK} ]
1725
then
1826
ndk_dir=${NDK}
1927
else
20-
ndk_dir=${ndk_dir_def}
28+
echo Please specify NDK path
29+
exit_error
2130
fi
2231

2332
ndk_dir=`readlink -f ${ndk_dir}`
@@ -35,16 +44,6 @@ echo "NDK - ${ndk_dir}"
3544
echo "Android API: ${android_api}"
3645
echo "_______________________"
3746

38-
39-
exit_error()
40-
{
41-
echo " _______"
42-
echo "| |"
43-
echo "| ERROR |"
44-
echo "|_______|"
45-
exit 1
46-
}
47-
4847
{
4948
if [ $# -ne 0 ]
5049
then
@@ -69,38 +68,22 @@ exit_error()
6968
echo "| TOOLCHAIN |"
7069
echo "|____________________|"
7170

72-
if [ -d "$toolchain_dir" ]
73-
then
74-
echo Toolchain already exist! Nothing to do.
75-
else
76-
echo Creating toolchain...
77-
mkdir $toolchain_dir
78-
python ${ndk_dir}/build/tools/make_standalone_toolchain.py \
79-
--arch=${toolchain_arch} \
80-
--api=${android_api} \
81-
--install-dir=${toolchain_dir} \
82-
--force
83-
84-
if [ $? -ne 0 ]
85-
then
86-
rm -fr $toolchain_dir
87-
exit_error
88-
fi
89-
fi
90-
91-
export PATH=`pwd`/$toolchain_dir/bin:$PATH
71+
toolchain_dir=$ndk_dir/toolchains/llvm/prebuilt/linux-x86_64
72+
export sysroot=$toolchain_dir/sysroot
73+
export PATH=$toolchain_dir/bin:$PATH
9274

9375
target_host=aarch64-linux-android
94-
export AR=$target_host-ar
95-
export AS=$target_host-clang
96-
export CC=$target_host-clang
97-
export CXX=$target_host-clang++
76+
target_host_with_api=$target_host$android_api
77+
export AR=llvm-ar
78+
export AS=$target_host_with_api-clang
79+
export CC=$target_host_with_api-clang
80+
export CXX=$target_host_with_api-clang++
9881
export LD=$target_host-ld
9982
export STRIP=$target_host-strip
10083
export RANLIB=$target_host-ranlib
10184
export STRIP=$target_host-strip
102-
export CFLAGS="-static -O2 -fPIE -fPIC -march=armv8-a"
103-
export LDFLAGS="-pie"
85+
export CFLAGS="-static -O2 -fPIE -fPIC -march=armv8-a --sysroot=$sysroot"
86+
export LDFLAGS="-pie --sysroot=$sysroot"
10487
}
10588

10689
# download & untar libpcap + tcpdump

build_x86.sh

100644100755
Lines changed: 21 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,28 @@ libpcap_ver=1.9.0
55
android_api_def=23
66
toolchain_arch=x86
77
toolchain_dir=toolchain_x86
8-
ndk_dir_def=android-ndk-r18b
98

109
#-------------------------------------------------------#
1110

1211
tcpdump_dir=tcpdump-${tcpdump_ver}
1312
libpcap_dir=libpcap-${libpcap_ver}
1413

1514

15+
exit_error()
16+
{
17+
echo " _______"
18+
echo "| |"
19+
echo "| ERROR |"
20+
echo "|_______|"
21+
exit 1
22+
}
23+
1624
if [ ${NDK} ]
1725
then
1826
ndk_dir=${NDK}
1927
else
20-
ndk_dir=${ndk_dir_def}
28+
echo Please specify NDK path
29+
exit_error
2130
fi
2231

2332
ndk_dir=`readlink -f ${ndk_dir}`
@@ -35,16 +44,6 @@ echo "NDK - ${ndk_dir}"
3544
echo "Android API: ${android_api}"
3645
echo "_______________________"
3746

38-
39-
exit_error()
40-
{
41-
echo " _______"
42-
echo "| |"
43-
echo "| ERROR |"
44-
echo "|_______|"
45-
exit 1
46-
}
47-
4847
{
4948
if [ $# -ne 0 ]
5049
then
@@ -69,38 +68,22 @@ exit_error()
6968
echo "| TOOLCHAIN |"
7069
echo "|____________________|"
7170

72-
if [ -d "$toolchain_dir" ]
73-
then
74-
echo Toolchain already exist! Nothing to do.
75-
else
76-
echo Creating toolchain...
77-
mkdir $toolchain_dir
78-
python ${ndk_dir}/build/tools/make_standalone_toolchain.py \
79-
--arch=${toolchain_arch} \
80-
--api=${android_api} \
81-
--install-dir=${toolchain_dir} \
82-
--force
83-
84-
if [ $? -ne 0 ]
85-
then
86-
rm -fr $toolchain_dir
87-
exit_error
88-
fi
89-
fi
90-
91-
export PATH=`pwd`/$toolchain_dir/bin:$PATH
71+
toolchain_dir=$ndk_dir/toolchains/llvm/prebuilt/linux-x86_64
72+
export sysroot=$toolchain_dir/sysroot
73+
export PATH=$toolchain_dir/bin:$PATH
9274

9375
target_host=i686-linux-android
94-
export AR=$target_host-ar
95-
export AS=$target_host-clang
96-
export CC=$target_host-clang
97-
export CXX=$target_host-clang++
76+
target_host_with_api=$target_host$android_api
77+
export AR=llvm-ar
78+
export AS=$target_host_with_api-clang
79+
export CC=$target_host_with_api-clang
80+
export CXX=$target_host_with_api-clang++
9881
export LD=$target_host-ld
9982
export STRIP=$target_host-strip
10083
export RANLIB=$target_host-ranlib
10184
export STRIP=$target_host-strip
102-
export CFLAGS="-static -O2 -fPIE -fPIC"
103-
export LDFLAGS="-pie"
85+
export CFLAGS="-static -O2 -fPIE -fPIC --sysroot=$sysroot"
86+
export LDFLAGS="-pie --sysroot=$sysroot"
10487
}
10588

10689
# download & untar libpcap + tcpdump

0 commit comments

Comments
 (0)