Ettercap seems to include most of it's libraries in an LDFLAGS element of the automake Makefile.am, rather than the LDADD segment. As such the gtk front-end wasn't building because all the prior libraries were being ignored by --as-needed. Moving these libraries to the end of the LDADD statement seems to fix the compilation. Once the patch is applied, don't forget to eautomake as well. Patch to follow.
Created attachment 83826 [details, diff] ettercap-0.7.3-as-needed.patch
A part the whitespace change, this patch looks good for me. Did you send this upstream, too?
Sorry about the whitespace issues, I'll try and pay more attention to that next time. As for upstream, no I haven't contacted them at all...
emerge --info Portage 2.1_pre10-r5 (!/home/dan/gentoo/gentoo-x86/profiles/hardened/x86/2.6, gcc-3.4.6, glibc-2.3.6-r3, 2.6.15-gentoo i686) ================================================================= System uname: 2.6.15-gentoo i686 AMD Athlon(tm) Gentoo Base System version 1.12.0_pre19 distcc 2.18.3 i686-pc-linux-gnu (protocols 1 and 2) (default port 3632) [disabled] ccache version 2.3 [disabled] dev-lang/python: 2.3.5-r2, 2.4.2 dev-python/pycrypto: 2.0.1-r5 dev-util/ccache: 2.3 dev-util/confcache: [Not Present] sys-apps/sandbox: 1.2.17 sys-devel/autoconf: 2.13, 2.59-r7 sys-devel/automake: 1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r1 sys-devel/binutils: 2.16.1-r2 sys-devel/libtool: 1.5.22 virtual/os-headers: 2.6.11-r5 ACCEPT_KEYWORDS="x86 ~x86" AUTOCLEAN="yes" CBUILD="i686-pc-linux-gnu" CFLAGS="-march=athlon-xp -O2 -pipe" CHOST="i686-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3.4/env /usr/kde/3.4/share/config /usr/kde/3.4/shutdown /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/kde/3/share/config /usr/lib/X11/xkb /usr/lib/mozilla/defaults/pref /usr/share/config /usr/share/texmf/dvipdfm/config/ /usr/share/texmf/dvips/config/ /usr/share/texmf/tex/generic/config/ /usr/share/texmf/tex/platex/config/ /usr/share/texmf/xdvi/ /var/qmail/control" CONFIG_PROTECT_MASK="/etc/eselect/compiler /etc/gconf /etc/revdep-rebuild /etc/terminfo /etc/env.d" CXXFLAGS="-march=athlon-xp -O2 -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="autoconfig collision-protect cvs digest keepwork metadata-transfer nostrip sandbox sfperms sign strict stricter test userpriv usersandbox verify-rdepend" GENTOO_MIRRORS="" LDFLAGS=" -Wl,--as-needed" MAKEOPTS="-j3" PKGDIR="/usr/portage/packages" PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude='/distfiles' --exclude='/local' --exclude='/packages'" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/home/dan/gentoo/gentoo-x86" SYNC="rsync://rsync.au.gentoo.org/gentoo-portage" USE="3dnow 3dnowex X aac acpi alsa avi bash-completion berkdb bitmap-fonts bzip2 caps crypt cups divx4linux dlloader ecc encode ethereal extensions fastcgi fla flac fortran gd gmp gnutls gphoto2 gstreamer gtk gtk2 hardened hpn i8x0 imagemagick imlib ipv6 javacomm jpeg kde kdeenablefinal kerberos libgda lzo mbox mmx mp3 mpeg multitarget mysql nptl nptlonly ntlm ogg oggvorbis openal opengl operanom2 pam perl php pic png postgres ppds python qt quicktime readline samba sdl sguil slp smime socks5 sox spell sse ssl tiff true-type truetype type1-fonts usb userlocales vhosts vorbis x86 xine xinerama xml xml2 zlib elibc_glibc kernel_linux userland_GNU" Unset: ASFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LC_ALL, LINGUAS, PORTAGE_RSYNC_EXTRA_OPTS if i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I../include -O2 -funroll-loops -fomit-frame-pointer -Wall -I/usr/include -march=athlon-xp -O2 -pipe -MT ettercap-ec_ymsg.o -MD -MP -MF ".deps/ettercap-ec_ymsg.Tpo" -c -o ettercap-ec_ymsg.o `test -f 'dissectors/ec_ymsg.c' || echo './'`dissectors/ec_ymsg.c; \ then mv -f ".deps/ettercap-ec_ymsg.Tpo" ".deps/ettercap-ec_ymsg.Po"; else rm -f ".deps/ettercap-ec_ymsg.Tpo"; exit 1; fi i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I../include -march=athlon-xp -O2 -pipe -lresolv -lz -lpthread -lltdl -ldl -lpcap -lnet -L/usr/lib -lssl -lcrypto -lpcre -lpanel -lmenu -lform -lncurses -lgtk-x11-2.0 -lgdk-x11-2.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lcairo -lpango-1.0 -latk-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 -lgthread-2.0 -c missing/strlcpy.c -o missing/strlcpy.o i686-pc-linux-gnu-gcc: -lresolv: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lz: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lpthread: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lltdl: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -ldl: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lpcap: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lnet: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lssl: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lcrypto: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lpcre: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lpanel: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lmenu: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lform: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lncurses: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lgtk-x11-2.0: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lgdk-x11-2.0: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lgdk_pixbuf-2.0: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lm: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lpangocairo-1.0: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lcairo: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lpango-1.0: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -latk-1.0: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lgobject-2.0: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lgmodule-2.0: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -ldl: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lglib-2.0: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lgthread-2.0: linker input file unused because linking not done i686-pc-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I. -I../include -march=athlon-xp -O2 -pipe -lresolv -lz -lpthread -lltdl -ldl -lpcap -lnet -L/usr/lib -lssl -lcrypto -lpcre -lpanel -lmenu -lform -lncurses -lgtk-x11-2.0 -lgdk-x11-2.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lcairo -lpango-1.0 -latk-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 -lgthread-2.0 -c missing/strlcat.c -o missing/strlcat.o i686-pc-linux-gnu-gcc: -lresolv: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lz: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lpthread: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lltdl: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -ldl: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lpcap: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lnet: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lssl: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lcrypto: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lpcre: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lpanel: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lmenu: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lform: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lncurses: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lgtk-x11-2.0: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lgdk-x11-2.0: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lgdk_pixbuf-2.0: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lm: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lpangocairo-1.0: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lcairo: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lpango-1.0: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -latk-1.0: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lgobject-2.0: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lgmodule-2.0: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -ldl: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lglib-2.0: linker input file unused because linking not done i686-pc-linux-gnu-gcc: -lgthread-2.0: linker input file unused because linking not done /bin/sh ../libtool --mode=link i686-pc-linux-gnu-gcc -march=athlon-xp -O2 -pipe -Wl,--as-needed -pthread -o ettercap -export-dynamic -lresolv -lz -lpthread -lltdl -ldl -lpcap -lnet -L/usr/lib -lssl -lcrypto -lpcre -lpanel -lmenu -lform -lncurses -lgtk-x11-2.0 -lgdk-x11-2.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lcairo -lpango-1.0 -latk-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 -lgthread-2.0 ettercap-ec_capture.o ettercap-ec_checksum.o ettercap-ec_conf.o ettercap-ec_connbuf.o ettercap-ec_conntrack.o ettercap-ec_debug.o ettercap-ec_decode.o ettercap-ec_dispatcher.o ettercap-ec_dissect.o ettercap-ec_error.o ettercap-ec_file.o ettercap-ec_filter.o ettercap-ec_fingerprint.o ettercap-ec_format.o ettercap-ec_globals.o ettercap-ec_hash.o ettercap-ec_hook.o ettercap-ec_inet.o ettercap-ec_inject.o ettercap-ec_interfaces.o ettercap-ec_log.o ettercap-ec_main.o ettercap-ec_manuf.o ettercap-ec_mitm.o ettercap-ec_packet.o ettercap-ec_parser.o ettercap-ec_passive.o ettercap-ec_plugins.o ettercap-ec_poll.o ettercap-ec_profiles.o ettercap-ec_resolv.o ettercap-ec_scan.o ettercap-ec_send.o ettercap-ec_services.o ettercap-ec_session.o ettercap-ec_signals.o ettercap-ec_socket.o ettercap-ec_sniff.o ettercap-ec_sniff_bridge.o ettercap-ec_sniff_unified.o ettercap-ec_sslwrap.o ettercap-ec_stats.o ettercap-ec_streambuf.o ettercap-ec_strings.o ettercap-ec_threads.o ettercap-ec_ui.o ettercap-ec_update.o ettercap-ec_arp_poisoning.o ettercap-ec_dhcp_spoofing.o ettercap-ec_icmp_redirect.o ettercap-ec_port_stealing.o ettercap-ec_arp.o ettercap-ec_eth.o ettercap-ec_fddi.o ettercap-ec_cooked.o ettercap-ec_gre.o ettercap-ec_icmp.o ettercap-ec_ip.o ettercap-ec_ip6.o ettercap-ec_ppp.o ettercap-ec_prism.o ettercap-ec_rawip.o ettercap-ec_tcp.o ettercap-ec_tr.o ettercap-ec_vlan.o ettercap-ec_udp.o ettercap-ec_wifi.o ettercap-ec_bgp.o ettercap-ec_cvs.o ettercap-ec_dhcp.o ettercap-ec_dns.o ettercap-ec_ftp.o ettercap-ec_http.o ettercap-ec_imap.o ettercap-ec_icq.o ettercap-ec_irc.o ettercap-ec_ldap.o ettercap-ec_mountd.o ettercap-ec_msn.o ettercap-ec_mysql.o ettercap-ec_napster.o ettercap-ec_nntp.o ettercap-ec_ospf.o ettercap-ec_pop.o ettercap-ec_portmap.o ettercap-ec_rcon.o ettercap-ec_rip.o ettercap-ec_rlogin.o ettercap-ec_smb.o ettercap-ec_smtp.o ettercap-ec_snmp.o ettercap-ec_ssh.o ettercap-ec_socks.o ettercap-ec_telnet.o ettercap-ec_vnc.o ettercap-ec_vrrp.o ettercap-ec_x11.o ettercap-ec_ymsg.o missing/strlcpy.o missing/strlcat.o os/libec_os.a interfaces/daemon/libec_daemon.a interfaces/text/libec_text.a interfaces/curses/libec_curses.a interfaces/gtk/libec_gtk.a -lresolv -lz -lpthread -lltdl -ldl mkdir .libs i686-pc-linux-gnu-gcc -march=athlon-xp -O2 -pipe -Wl,--as-needed -pthread -o ettercap ettercap-ec_capture.o ettercap-ec_checksum.o ettercap-ec_conf.o ettercap-ec_connbuf.o ettercap-ec_conntrack.o ettercap-ec_debug.o ettercap-ec_decode.o ettercap-ec_dispatcher.o ettercap-ec_dissect.o ettercap-ec_error.o ettercap-ec_file.o ettercap-ec_filter.o ettercap-ec_fingerprint.o ettercap-ec_format.o ettercap-ec_globals.o ettercap-ec_hash.o ettercap-ec_hook.o ettercap-ec_inet.o ettercap-ec_inject.o ettercap-ec_interfaces.o ettercap-ec_log.o ettercap-ec_main.o ettercap-ec_manuf.o ettercap-ec_mitm.o ettercap-ec_packet.o ettercap-ec_parser.o ettercap-ec_passive.o ettercap-ec_plugins.o ettercap-ec_poll.o ettercap-ec_profiles.o ettercap-ec_resolv.o ettercap-ec_scan.o ettercap-ec_send.o ettercap-ec_services.o ettercap-ec_session.o ettercap-ec_signals.o ettercap-ec_socket.o ettercap-ec_sniff.o ettercap-ec_sniff_bridge.o ettercap-ec_sniff_unified.o ettercap-ec_sslwrap.o ettercap-ec_stats.o ettercap-ec_streambuf.o ettercap-ec_strings.o ettercap-ec_threads.o ettercap-ec_ui.o ettercap-ec_update.o ettercap-ec_arp_poisoning.o ettercap-ec_dhcp_spoofing.o ettercap-ec_icmp_redirect.o ettercap-ec_port_stealing.o ettercap-ec_arp.o ettercap-ec_eth.o ettercap-ec_fddi.o ettercap-ec_cooked.o ettercap-ec_gre.o ettercap-ec_icmp.o ettercap-ec_ip.o ettercap-ec_ip6.o ettercap-ec_ppp.o ettercap-ec_prism.o ettercap-ec_rawip.o ettercap-ec_tcp.o ettercap-ec_tr.o ettercap-ec_vlan.o ettercap-ec_udp.o ettercap-ec_wifi.o ettercap-ec_bgp.o ettercap-ec_cvs.o ettercap-ec_dhcp.o ettercap-ec_dns.o ettercap-ec_ftp.o ettercap-ec_http.o ettercap-ec_imap.o ettercap-ec_icq.o ettercap-ec_irc.o ettercap-ec_ldap.o ettercap-ec_mountd.o ettercap-ec_msn.o ettercap-ec_mysql.o ettercap-ec_napster.o ettercap-ec_nntp.o ettercap-ec_ospf.o ettercap-ec_pop.o ettercap-ec_portmap.o ettercap-ec_rcon.o ettercap-ec_rip.o ettercap-ec_rlogin.o ettercap-ec_smb.o ettercap-ec_smtp.o ettercap-ec_snmp.o ettercap-ec_ssh.o ettercap-ec_socks.o ettercap-ec_telnet.o ettercap-ec_vnc.o ettercap-ec_vrrp.o ettercap-ec_x11.o ettercap-ec_ymsg.o missing/strlcpy.o missing/strlcat.o -Wl,--export-dynamic -lpcap /usr/lib/libnet.so -L/usr/lib -lssl -lcrypto /usr/lib/libpcre.so -lpanel -lmenu -lform -lncurses /usr/lib/libgtk-x11-2.0.so /usr/lib/libgdk-x11-2.0.so /usr/lib/libgdk_pixbuf-2.0.so /usr/lib/libpangocairo-1.0.so /usr/lib/libpangoft2-1.0.so /usr/lib/libcairo.so -lXrender -lX11 -lXext -lpng12 /usr/lib/libfontconfig.so /usr/lib/libexpat.so /usr/lib/libfreetype.so /usr/lib/libpango-1.0.so -lm /usr/lib/libatk-1.0.so /usr/lib/libgobject-2.0.so /usr/lib/libgmodule-2.0.so /usr/lib/libgthread-2.0.so /usr/lib/libglib-2.0.so os/libec_os.a interfaces/daemon/libec_daemon.a interfaces/text/libec_text.a interfaces/curses/libec_curses.a interfaces/gtk/libec_gtk.a -lresolv -lz -lpthread /usr/lib/libltdl.so -ldl interfaces/curses/libec_curses.a(libwdg_a-wdg_file.o): In function `wdg_file_menu_destroy': wdg_file.c:(.text+0x3e7): undefined reference to `unpost_menu' wdg_file.c:(.text+0x3f2): undefined reference to `free_menu' wdg_file.c:(.text+0x405): undefined reference to `free_item' interfaces/curses/libec_curses.a(libwdg_a-wdg_file.o): In function `wdg_file_menu_create': wdg_file.c:(.text+0x6a1): undefined reference to `new_item' wdg_file.c:(.text+0x7ac): undefined reference to `new_item' wdg_file.c:(.text+0x7f4): undefined reference to `new_menu' wdg_file.c:(.text+0x814): undefined reference to `set_menu_format' wdg_file.c:(.text+0x837): undefined reference to `set_menu_spacing' wdg_file.c:(.text+0x852): undefined reference to `scale_menu' wdg_file.c:(.text+0x8ff): undefined reference to `set_menu_win' wdg_file.c:(.text+0x93a): undefined reference to `set_menu_sub' wdg_file.c:(.text+0x94f): undefined reference to `set_menu_mark' wdg_file.c:(.text+0x965): undefined reference to `set_menu_grey' wdg_file.c:(.text+0x97b): undefined reference to `set_menu_back' wdg_file.c:(.text+0x996): undefined reference to `set_menu_fore' wdg_file.c:(.text+0x9a1): undefined reference to `post_menu' wdg_file.c:(.text+0xa1d): undefined reference to `new_item' wdg_file.c:(.text+0xa3f): undefined reference to `new_item' wdg_file.c:(.text+0xa63): undefined reference to `item_opts_off' interfaces/curses/libec_curses.a(libwdg_a-wdg_file.o): In function `wdg_file_driver': wdg_file.c:(.text+0xf2b): undefined reference to `menu_driver' wdg_file.c:(.text+0xf38): undefined reference to `current_item' wdg_file.c:(.text+0xf40): undefined reference to `item_opts' wdg_file.c:(.text+0xfc5): undefined reference to `menu_driver' wdg_file.c:(.text+0xfd7): undefined reference to `current_item' wdg_file.c:(.text+0xfdf): undefined reference to `item_opts' wdg_file.c:(.text+0xff4): undefined reference to `current_item' wdg_file.c:(.text+0xffc): undefined reference to `item_name' wdg_file.c:(.text+0x103e): undefined reference to `current_item' wdg_file.c:(.text+0x1046): undefined reference to `item_name' wdg_file.c:(.text+0x1120): undefined reference to `current_item' wdg_file.c:(.text+0x1128): undefined reference to `item_name' interfaces/curses/libec_curses.a(libwdg_a-wdg_input.o): In function `wdg_input_form_destroy': wdg_input.c:(.text+0x2d0): undefined reference to `unpost_form' wdg_input.c:(.text+0x2db): undefined reference to `free_form' interfaces/curses/libec_curses.a(libwdg_a-wdg_input.o): In function `wdg_input_destroy': wdg_input.c:(.text+0x38d): undefined reference to `free_field' interfaces/curses/libec_curses.a(libwdg_a-wdg_input.o): In function `wdg_input_form_create': wdg_input.c:(.text+0x4ab): undefined reference to `new_form' .... ec_gtk_hosts.c:(.text+0x106a): undefined reference to `gtk_list_store_remove' collect2: ld returned 1 exit status make[2]: *** [ettercap] Error 1 make[2]: Leaving directory `/var/tmp/portage/ettercap-0.7.3/work/ettercap-NG-0.7.3/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/var/tmp/portage/ettercap-0.7.3/work/ettercap-NG-0.7.3/src' make: *** [all-recursive] Error 1 !!! ERROR: net-analyzer/ettercap-0.7.3 failed. Call stack: ebuild.sh, line 1527: Called dyn_compile ebuild.sh, line 930: Called src_compile ettercap-0.7.3.ebuild, line 60: Called die !!! emake failed !!! If you need support, post the topmost build error, and the call stack if relevant.
Right, this compiled successfully under glibc-2.4/gcc-4.1.0, so perhaps that's the problem. Either that or some hardened flags are the issue. I'll look into it when I get a chance (and might tidy up the patch)... Anyone else any ideas about what's causing this?
Not really, it seems like some gtk dependency weirdness w/ libs
Created attachment 103637 [details, diff] ettercap-0.7.3.ebuild patch
Created attachment 103638 [details, diff] ettercap-0.7.3.ebuild patch
Timothy, looks good, feel free to commit.
Committed, thx