cancel
Showing results for 
Search instead for 
Did you mean: 

cross compiling tcpdump

SOLVED
Go to solution
Piotr Kirklewski
Super Advisor

cross compiling tcpdump

Hi there
I'm compiling tcpdump for my Linksys router.
libcap compiles fine but compiling tcpdump gives me a bunch of errors.

I'm dooing this:

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

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

wget ftp://ftp.dd-wrt.com/others/sourcecode/toolchains/toolchains.x86.debian.sp1.tar.bz2

tar -xvf libpcap-1.0.0.tar.gz

tar -xvf tcpdump-4.0.0.tar.gz

cd /root/libpcap-1.0.0

CC=mipsel-linux-uclibc-gcc ac_cv_linux_vers=2 ./configure --host=mipsel-linux --with-pcap=linux

make

cd ../tcpdump-4.0.0

CC=mipsel-linux-uclibc-gcc ac_cv_linux_vers=2 ./configure --host=mipsel-linux --with-pcap=linux

make

...
./../libpcap-1.0.0/libpcap.a(pcap.o): In function `pcap_datalink_name_to_val':
pcap.c:(.text+0x1b8): multiple definition of `pcap_datalink_name_to_val'
dlnames.o:dlnames.c:(.text+0xe8): first defined here
./../libpcap-1.0.0/libpcap.a(pcap.o): In function `pcap_datalink_val_to_name':
pcap.c:(.text+0x26c): multiple definition of `pcap_datalink_val_to_name'
dlnames.o:dlnames.c:(.text+0x0): first defined here
./../libpcap-1.0.0/libpcap.a(pcap.o): In function `pcap_datalink_val_to_description':
pcap.c:(.text+0x2d4): multiple definition of `pcap_datalink_val_to_description'
dlnames.o:dlnames.c:(.text+0x68): first defined here
./../libpcap-1.0.0/libpcap.a(pcap.o): In function `pcap_list_datalinks':
pcap.c:(.text+0xfbc): multiple definition of `pcap_list_datalinks'
datalinks.o:datalinks.c:(.text+0x0): first defined here
./../libpcap-1.0.0/libpcap.a(savefile.o): In function `pcap_dump_ftell':
savefile.c:(.text+0xd8): multiple definition of `pcap_dump_ftell'
pcap_dump_ftell.o:pcap_dump_ftell.c:(.text+0x0): first defined here
print-enc.o: In function `enc_if_print':
print-enc.c:(.text+0x1e0): undefined reference to `ip6_print'
./../libpcap-1.0.0/libpcap.a(grammar.o): In function `pcap_parse':
grammar.c:(.text+0x5e0): undefined reference to `pcap_lex'
collect2: ld returned 1 exit status
make: *** [tcpdump] Error 1

Anyone knows how to sort it out ?

Regards

Peter
Jesus is the King
3 REPLIES
Dennis Handly
Acclaimed Contributor
Solution

Re: cross compiling tcpdump

What is your host OS? What is your target OS?

You appear to have both duplicate symbols and unsats.
pcap_datalink_name_to_val appears to be in both pcap.c and dlnames.c. Etc.
You are also missing: ip6_print pcap_lex
Piotr Kirklewski
Super Advisor

Re: cross compiling tcpdump

Hi
My OS is Red Hat Linux 7.2.
My target OS is a firmware for Linksys WRT54GL called DD-WRT.
I downloaded the toolchains from here: ftp://ftp.dd-wrt.com/others/sourcecode/toolchains/

And I know it works:

touch /root/hello.c

cat > ~/hello.c<< "EOF"

#include

int main ( void ) {
printf( "Hello world!\n" );
}
EOF

mipsel-linux-uclibc-gcc hello.c -o hello

Above commands work fine and the hello program works fine on my router :)

So I'm absolutely sure that it's not broken toolchains that affects me.

I know it's not linux forum but the linux forum does not have a "programming" section.
So I hope somebody will be so kind to help me here.

Can anyone check how the compilation goes on your system ?

I pretty much gave the instructions on what I'm doing in the initial post.

Regards

Peter


Jesus is the King
rick jones
Honored Contributor

Re: cross compiling tcpdump

Willingness or no of folks watching this forum to help notwithstanding, you may have better luck going straight to the tcpdump-workers mailing list: tcpdump-workers@lists.tcpdump.org

I cannot recall if one needs to be subscribed first, but I suspect that there will be links off of www.tcpdump.org with that information.
there is no rest for the wicked yet the virtuous have no pillows