Fails to compile on Ubuntu 18.04
jabedude opened this issue · 3 comments
Hello,
A git checkout v0.10.1 fails to build with cargo build --release
. cargo build
succeeds. libpcap-dev
and libseccomp-dev
are installed. Here is the error:
sniffglue.dnmhg9ku-cgu.10:(.text._ZN9sniffglue5sniff4open17hb8e84e2e0b7f71bfE+0xe8): undefined reference to
pcap_create' sniffglue.dnmhg9ku-cgu.10:(.text._ZN9sniffglue5sniff4open17hb8e84e2e0b7f71bfE+0x109): undefined reference to
pcap_set_promisc'
sniffglue.dnmhg9ku-cgu.10:(.text._ZN9sniffglue5sniff4open17hb8e84e2e0b7f71bfE+0x11e): undefined reference topcap_set_immediate_mode' sniffglue.dnmhg9ku-cgu.10:(.text._ZN9sniffglue5sniff4open17hb8e84e2e0b7f71bfE+0x127): undefined reference to
pcap_activate'
sniffglue.dnmhg9ku-cgu.10:(.text._ZN9sniffglue5sniff4open17hb8e84e2e0b7f71bfE+0x138): undefined reference topcap_geterr' /home/josh/Projects/sniffglue/target/release/deps/libsniffglue-c5fa3a636927f4ab.rlib(sniffglue-c5fa3a636927f4ab.sniffglue.dnmhg9ku-cgu.10.rcgu.o): In function
sniffglue::sniff::open_file':
sniffglue.dnmhg9ku-cgu.10:(.text._ZN9sniffglue5sniff9open_file17h283fbc9cc6b717a9E+0xe2): undefined reference topcap_open_offline' /home/josh/Projects/sniffglue/target/release/deps/libsniffglue-c5fa3a636927f4ab.rlib(sniffglue-c5fa3a636927f4ab.sniffglue.dnmhg9ku-cgu.10.rcgu.o): In function
sniffglue::sniff::default_interface':
sniffglue.dnmhg9ku-cgu.10:(.text._ZN9sniffglue5sniff17default_interface17h845f99d15545b423E+0x9c): undefined reference topcap_lookupdev' /home/josh/Projects/sniffglue/target/release/deps/libsniffglue-c5fa3a636927f4ab.rlib(sniffglue-c5fa3a636927f4ab.sniffglue.dnmhg9ku-cgu.10.rcgu.o): In function
sniffglue::sniff::Cap::datalink':
sniffglue.dnmhg9ku-cgu.10:(.text._ZN9sniffglue5sniff3Cap8datalink17h5645d7000768c5a4E+0x5): undefined reference topcap_datalink' /home/josh/Projects/sniffglue/target/release/deps/libsniffglue-c5fa3a636927f4ab.rlib(sniffglue-c5fa3a636927f4ab.sniffglue.dnmhg9ku-cgu.10.rcgu.o): In function
sniffglue::sniff::Cap::next':
sniffglue.dnmhg9ku-cgu.10:(.text._ZN9sniffglue5sniff3Cap4next17hd3bdc1a1d5f3cdc7E+0x1b): undefined reference topcap_next_ex' /home/josh/Projects/sniffglue/target/release/deps/libsniffglue-c5fa3a636927f4ab.rlib(sniffglue-c5fa3a636927f4ab.sniffglue.dnmhg9ku-cgu.10.rcgu.o): In function
<sniffglue::sniff::Cap as core::ops::drop::Drop>::drop':
sniffglue.dnmhg9ku-cgu.10:(.text.ZN63$LT$sniffglue..sniff..Cap$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdb74488eeb23f80cE+0x5): undefined reference to `pcap_close'
collect2: error: ld returned 1 exit status
hm, are you sure libpcap-dev
is installed correctly? I couldn't reproduce it, but explicitly uninstalling the headers with apt purge libpcap-dev libpcap0.8-dev
gave me a very similar error:
/sniffglue/src/sniff.rs:17: undefined reference to `pcap_create'
/sniffglue/src/sniff.rs:25: undefined reference to `pcap_set_promisc'
/sniffglue/src/sniff.rs:29: undefined reference to `pcap_set_immediate_mode'
/sniffglue/src/sniff.rs:32: undefined reference to `pcap_activate'
/sniffglue/src/sniff.rs:34: undefined reference to `pcap_geterr'
/sniffglue/target/debug/deps/libsniffglue-5c3432cd4e2f8e1a.rlib(sniffglue-5c3432cd4e2f8e1a.30h15u9xlv35pkot.rcgu.o): In function `sniffglue::sniff::open_file':
/sniffglue/src/sniff.rs:47: undefined reference to `pcap_open_offline'
/sniffglue/target/debug/deps/libsniffglue-5c3432cd4e2f8e1a.rlib(sniffglue-5c3432cd4e2f8e1a.30h15u9xlv35pkot.rcgu.o): In function `sniffglue::sniff::default_interface':
/sniffglue/src/sniff.rs:62: undefined reference to `pcap_lookupdev'
/sniffglue/target/debug/deps/libsniffglue-5c3432cd4e2f8e1a.rlib(sniffglue-5c3432cd4e2f8e1a.30h15u9xlv35pkot.rcgu.o): In function `sniffglue::sniff::Cap::datalink':
/sniffglue/src/sniff.rs:74: undefined reference to `pcap_datalink'
/sniffglue/target/debug/deps/libsniffglue-5c3432cd4e2f8e1a.rlib(sniffglue-5c3432cd4e2f8e1a.30h15u9xlv35pkot.rcgu.o): In function `sniffglue::sniff::Cap::next':
/sniffglue/src/sniff.rs:83: undefined reference to `pcap_next_ex'
/sniffglue/target/debug/deps/libsniffglue-5c3432cd4e2f8e1a.rlib(sniffglue-5c3432cd4e2f8e1a.30h15u9xlv35pkot.rcgu.o): In function `<sniffglue::sniff::Cap as core::ops::drop::Drop>::drop':
/sniffglue/src/sniff.rs:106: undefined reference to `pcap_close'
collect2: error: ld returned 1 exit status
Is this with a fresh build? What's the output of cargo --version
and rustc --version
?
Yes libpcap-dev is installed:
λ sniffglue (master) → sudo apt install libpcap-dev libpcap0.8-dev
[sudo] password for josh:
Reading package lists... Done
Building dependency tree
Reading state information... Done
libpcap-dev is already the newest version (1.8.1-6ubuntu1.18.04.1).
libpcap0.8-dev is already the newest version (1.8.1-6ubuntu1.18.04.1).
libpcap0.8-dev set to manually installed.
The following packages were automatically installed and are no longer required:
libbpfcc libllvm8 linux-headers-5.3.0-28 linux-headers-5.3.0-28-generic linux-headers-5.3.0-40 linux-headers-5.3.0-40-generic linux-image-5.3.0-28-generic linux-image-5.3.0-40-generic linux-modules-5.3.0-28-generic
linux-modules-5.3.0-40-generic linux-modules-extra-5.3.0-28-generic linux-modules-extra-5.3.0-40-generic python-bpfcc python-netaddr
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 9 not upgraded.
Cargo and rustc info:
λ sniffglue (master) → cargo --version
cargo 1.42.0-nightly (9d32b7b01 2020-01-26)
λ sniffglue (master) → rustc --version
rustc 1.42.0-nightly (f43c34a13 2020-02-02)
Can you try to delete the target/ folder and build again? It seems there's an issue in the pcap crate I use that doesn't invalidate the cargo cache correctly if the libpcap-dev package wasn't installed during the first build.