Reputation: 13
I tried cross compiling tcpreplay (https://github.com/appneta/tcpreplay) on the latest version of Debian for Android 14 and ABI arm64-v8a but after running make
it ends in the error message
ld.lld: error: undefined symbol: txring_put
>>> referenced by sendpacket.c:328
>>> sendpacket.o:(sendpacket) in archive ./common/libcommon.a
ld.lld: error: undefined symbol: txring_init
>>> referenced by sendpacket.c:1088
>>> sendpacket.o:(sendpacket_open) in archive ./common/libcommon.a
clang: fatal error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [Makefile:721: tcpreplay] Error 1
make[3]: Leaving directory '/home/mika/tcpreplay/src'
make[2]: *** [Makefile:1229: all-recursive] Error 1
make[2]: Leaving directory '/home/mika/tcpreplay/src'
make[1]: *** [Makefile:603: all] Error 2
make[1]: Leaving directory '/home/mika/tcpreplay/src'
make: *** [Makefile:455: all-recursive] Error 1
These are the steps I used to cross compile:
git clone https://github.com/appneta/tcpreplay.git
cd tcpreplay
wget https://www.tcpdump.org/release/libpcap-1.10.5.tar.gz
tar zxvf libpcap-1.10.5.tar.gz
cd libpcap-1.10.5
export NDK=/home/mika/android-ndk-r27
export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64
export TARGET=aarch64-linux-android
export API=21
export SYSROOT=$TOOLCHAIN/sysroot
export CC=$TOOLCHAIN/bin/aarch64-linux-android21-clang
export CXX=$TOOLCHAIN/bin/aarch64-linux-android21-clang++
./configure --host=aarch64-linux-android --with-pcap=linux
make
sudo make install
cd /home/mika/tcpreplay
export NDK=/home/mika/android-ndk-r27
export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64
export TARGET=aarch64-linux-android
export API=21
export SYSROOT=$TOOLCHAIN/sysroot
export CC=$TOOLCHAIN/bin/aarch64-linux-android21-clang
export CXX=$TOOLCHAIN/bin/aarch64-linux-android21-clang++
./autogen.sh
./configure --host=aarch64-linux-android --build=x86_64-pc-linux-gnu --with-pcap=$SYSROOT/usr/local/lib --with-libpcap=/home/mika/tcpreplay/libpcap-1.10.5 CC=$CC CXX=$CXX
make
Everything until make
runs without any issues but make
returns the error mentioned above.
Inside the Makefile there is CROSS_LD = LD=
and LD = /home/mika/android-ndk-r27/toolchains/llvm/prebuilt/linux-x86_64/bin/ld
. I don't know if that is of any relevance.
I also found this GitHub issue: https://github.com/appneta/tcpreplay/issues/731, according to which "HAVE_TX_RING has not been able to compile for a very long time". I do not know what this means or how to fix it.
I'd be happy for any help because I really need tcpreplay for Android.
Upvotes: 0
Views: 20