diff --git a/configure.ac b/configure.ac
index 00c9e5a..0e46a00 100644
--- a/configure.ac
+++ b/configure.ac
@@ -105,18 +105,16 @@ AM_CONDITIONAL(NO_ASM, test x$enable_asm = xno)
 AM_CONDITIONAL(HAVE_NI, false)
 
 # libs
-AC_CHECK_LIB([cap], [cap_set_flag])
-AC_CHECK_LIB([crypto], [EVP_OpenInit])
+AC_CHECK_LIB([cap], [cap_set_flag], [tcpcryptd_LDADD="-lcap $tcpcryptd_LDADD"])
+AC_CHECK_LIB([crypto], [EVP_OpenInit], [tcpcryptd_LDADD="-lcrypto $tcpcryptd_LDADD"])
 
-LDFLAGS="$LDFLAGS -L/usr/local/lib"
-AC_CHECK_LIB([netfilter_queue], [nfq_open])
+AC_CHECK_LIB([netfilter_queue], [nfq_open], [tcpcryptd_LDADD="-lnetfilter_queue $tcpcryptd_LDADD"])
 
-AC_CHECK_LIB([nfnetlink], [nfnl_rcvbufsiz])
+AC_CHECK_LIB([nfnetlink], [nfnl_rcvbufsiz], [tcpcryptd_LDADD="-lnfnetlink $tcpcryptd_LDADD"])
 AC_CHECK_LIB([pthread], [pthread_create])
-AC_CHECK_LIB([rt], [clock_gettime])
-AC_CHECK_LIB([z], [compress])
 AC_CHECK_LIB([wsock32], [bind]) # TODO: find symbol name
 AC_CHECK_LIB([iphlpapi], [GetAdaptersInfo]) # TODO: find symbol name
+AC_SUBST([tcpcryptd_LDADD])
 
 # Checks for header files.
 AC_CHECK_HEADERS([arpa/inet.h fcntl.h limits.h netinet/in.h stddef.h stdint.h stdlib.h string.h strings.h sys/socket.h sys/time.h unistd.h])
diff --git a/src/Makefile.am b/src/Makefile.am
index 49e89aa..60344b4 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -11,7 +11,7 @@ tcpcryptd_SOURCES = \
 	tcpcrypt_version.h
 
 tcpcryptd_CFLAGS = -I$(top_srcdir)/include/ -I$(top_srcdir)
-tcpcryptd_LDADD  = -lcrypto
+tcpcryptd_LDADD = @tcpcryptd_LDADD@
 
 if OS_BSD
 tcpcryptd_SOURCES += freebsd.c
@@ -19,7 +19,6 @@ endif
 
 if OS_LINUX
 tcpcryptd_SOURCES += linux.c
-tcpcryptd_LDADD += -lnetfilter_queue -lnfnetlink -lcap
 endif
 
 if OS_MINGW
