The order of items being presented for linking needs to be fixed to work with -Wl,--as-needed.
CCLD clients/memcapable
clients/.libs/libutilities.a(utilities.o): In function `initialize_sasl':
/dev/shm/portage/dev-libs/libmemcached-0.44/work/libmemcached-0.44/clients/utilities.c:196: undefined reference to `sasl_client_init'
clients/.libs/libutilities.a(utilities.o): In function `shutdown_sasl':
/dev/shm/portage/dev-libs/libmemcached-0.44/work/libmemcached-0.44/clients/utilities.c:216: undefined reference to `sasl_done'
libmemcached/.libs/libmemcached.so: undefined reference to `sasl_client_step'
libmemcached/.libs/libmemcached.so: undefined reference to `sasl_dispose'
libmemcached/.libs/libmemcached.so: undefined reference to `sasl_client_start'
libmemcached/.libs/libmemcached.so: undefined reference to `sasl_client_new'
collect2: ld returned 1 exit status
make[2]: *** [clients/memcapable] Error 1
make[2]: Leaving directory `/dev/shm/portage/dev-libs/libmemcached-0.44/work/libmemcached-0.44'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/dev/shm/portage/dev-libs/libmemcached-0.44/work/libmemcached-0.44'
make: *** [all] Error 2
Increasing the verbosity:
/bin/sh ./libtool --tag=CC --mode=link x86_64-pc-linux-gnu-gcc -std=gnu99 -pthread -pipe -O3 -pedantic -Wall -Wundef -Wshadow -fdiagnostics-show-option -fvisibility=hidden -Wformat=2 -Wconversion -Wstrict-aliasing -Wextra -Wstrict-prototypes -Wmissing-prototypes -Wredundant-decls -Wmissing-declarations -Wcast-align -Wswitch-default -Wswitch-enum -Wwrite-strings -Wlogical-op -march=nocona -O2 -pipe -g -Wl,-O1 -Wl,--as-needed -o clients/memcapable clients/memcapable.o -lm clients/libutilities.la libmemcached/libmemcached.la /usr/lib64/libsasl2.so /usr/lib64/libdl.so /usr/lib64/libcrypt.so /usr/lib64/libresolv.so libmemcached/libbyteorder.la -lrt
libtool: link: x86_64-pc-linux-gnu-gcc -std=gnu99 -pthread -pipe -O3 -pedantic -Wall -Wundef -Wshadow -fdiagnostics-show-option -fvisibility=hidden -Wformat=2 -Wconversion -Wstrict-aliasing -Wextra -Wstrict-prototypes -Wmissing-prototypes -Wredundant-decls -Wmissing-declarations -Wcast-align -Wswitch-default -Wswitch-enum -Wwrite-strings -Wlogical-op -march=nocona -O2 -pipe -g -Wl,-O1 -Wl,--as-needed -o clients/.libs/memcapable clients/memcapable.o /usr/lib64/libsasl2.so /usr/lib64/libdl.so /usr/lib64/libcrypt.so /usr/lib64/libresolv.so clients/.libs/libutilities.a libmemcached/.libs/libmemcached.so -lm libmemcached/.libs/libbyteorder.a -lrt -pthread
clients/.libs/libutilities.a(utilities.o): In function `initialize_sasl':
/dev/shm/portage/dev-libs/libmemcached-0.44/work/libmemcached-0.44/clients/utilities.c:196: undefined reference to `sasl_client_init'
clients/.libs/libutilities.a(utilities.o): In function `shutdown_sasl':
/dev/shm/portage/dev-libs/libmemcached-0.44/work/libmemcached-0.44/clients/utilities.c:216: undefined reference to `sasl_done'
libmemcached/.libs/libmemcached.so: undefined reference to `sasl_client_step'
libmemcached/.libs/libmemcached.so: undefined reference to `sasl_dispose'
libmemcached/.libs/libmemcached.so: undefined reference to `sasl_client_start'
libmemcached/.libs/libmemcached.so: undefined reference to `sasl_client_new'
collect2: ld returned 1 exit status
make[2]: *** [clients/memcapable] Error 1
make[2]: Leaving directory `/dev/shm/portage/dev-libs/libmemcached-0.44/work/libmemcached-0.44'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/dev/shm/portage/dev-libs/libmemcached-0.44/work/libmemcached-0.44'
make: *** [all] Error 2
Is there a patch to this? I get the same error on Solaris 10 Sparc 64bit machine.