diff --git a/.gitignore b/.gitignore
index 4dbf28e..e503dd9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,7 @@
 *.orig
 *.patch
 *~
+*.la
 *.lo
 *.gcda
 *.gcno
@@ -26,6 +27,7 @@ config.status
 libtool
 pkgconfig/libodp*.pc
 .deps/
+.libs/
 cscope.out
 tags
 TAGS
diff --git a/test/validation/Makefile.inc b/test/validation/Makefile.inc
index 31729b8..cacdfe1 100644
--- a/test/validation/Makefile.inc
+++ b/test/validation/Makefile.inc
@@ -1,7 +1,9 @@
 include $(top_srcdir)/test/Makefile.inc
 
+COMMON_DIR = $(top_srcdir)/test/validation/common
+
 AM_CFLAGS += -I$(top_srcdir)/test/validation/common
 AM_LDFLAGS += -static
 
-LIBCUNIT_COMMON = $(top_builddir)/test/validation/common/libcunit_common.a
+LIBCUNIT_COMMON = $(COMMON_DIR)/libcunit_common.la
 LIBODP = $(LIB)/libodphelper.la $(LIB)/libodp.la
diff --git a/test/validation/buffer/.gitignore b/test/validation/buffer/.gitignore
index 01a6b36..0e8ac15 100644
--- a/test/validation/buffer/.gitignore
+++ b/test/validation/buffer/.gitignore
@@ -1,2 +1 @@
 buffer_main
-libbuffer.a
diff --git a/test/validation/buffer/Makefile.am b/test/validation/buffer/Makefile.am
index 8060240..e1b1233 100644
--- a/test/validation/buffer/Makefile.am
+++ b/test/validation/buffer/Makefile.am
@@ -1,8 +1,8 @@
 include ../Makefile.inc
 
-noinst_LIBRARIES = libbuffer.a
-libbuffer_a_SOURCES = buffer.c
+noinst_LTLIBRARIES = libbuffer.la
+libbuffer_la_SOURCES = buffer.c
 
 bin_PROGRAMS = buffer_main$(EXEEXT)
 dist_buffer_main_SOURCES = buffer_main.c
-buffer_main_LDADD = libbuffer.a $(LIBCUNIT_COMMON) $(LIBODP)
+buffer_main_LDADD = libbuffer.la $(LIBCUNIT_COMMON) $(LIBODP)
diff --git a/test/validation/classification/.gitignore b/test/validation/classification/.gitignore
index 3887aec..e2cdfef 100644
--- a/test/validation/classification/.gitignore
+++ b/test/validation/classification/.gitignore
@@ -1,2 +1 @@
 classification_main
-libclassification.a
diff --git a/test/validation/classification/Makefile.am b/test/validation/classification/Makefile.am
index 35ed7ad..ba468fa 100644
--- a/test/validation/classification/Makefile.am
+++ b/test/validation/classification/Makefile.am
@@ -1,10 +1,10 @@
 include ../Makefile.inc
 
-noinst_LIBRARIES = libclassification.a
-libclassification_a_SOURCES = odp_classification_basic.c \
-			      odp_classification_tests.c \
-			      classification.c
+noinst_LTLIBRARIES = libclassification.la
+libclassification_la_SOURCES = odp_classification_basic.c \
+			       odp_classification_tests.c \
+			       classification.c
 
 bin_PROGRAMS = classification_main$(EXEEXT)
 dist_classification_main_SOURCES = classification_main.c
-classification_main_LDADD = libclassification.a $(LIBCUNIT_COMMON) $(LIBODP)
+classification_main_LDADD = libclassification.la $(LIBCUNIT_COMMON) $(LIBODP)
diff --git a/test/validation/common/.gitignore b/test/validation/common/.gitignore
index e8aa876..6600799 100644
--- a/test/validation/common/.gitignore
+++ b/test/validation/common/.gitignore
@@ -1,2 +1,2 @@
 libcunit_common.a
-libcunit_common_as_main.a
+libcpumask_common.a
diff --git a/test/validation/common/Makefile.am b/test/validation/common/Makefile.am
index 5548c52..c6d019c 100644
--- a/test/validation/common/Makefile.am
+++ b/test/validation/common/Makefile.am
@@ -1,6 +1,6 @@
 AUTOMAKE_OPTIONS = foreign
 include $(top_srcdir)/test/Makefile.inc
 
-noinst_LIBRARIES = libcunit_common.a
-libcunit_common_a_CFLAGS = $(AM_CFLAGS)
-libcunit_common_a_SOURCES = odp_cunit_common.c
+noinst_LTLIBRARIES = libcunit_common.la
+
+libcunit_common_la_SOURCES = odp_cunit_common.c
diff --git a/test/validation/cpumask/.gitignore b/test/validation/cpumask/.gitignore
index 1dd4350..655a164 100644
--- a/test/validation/cpumask/.gitignore
+++ b/test/validation/cpumask/.gitignore
@@ -1,2 +1 @@
 cpumask_main
-libcpumask.a
diff --git a/test/validation/cpumask/Makefile.am b/test/validation/cpumask/Makefile.am
index 61b65ec..fa44f8d 100644
--- a/test/validation/cpumask/Makefile.am
+++ b/test/validation/cpumask/Makefile.am
@@ -1,8 +1,8 @@
 include ../Makefile.inc
 
-noinst_LIBRARIES = libcpumask.a
-libcpumask_a_SOURCES = cpumask.c
+noinst_LTLIBRARIES = libcpumask.la
+libcpumask_la_SOURCES = cpumask.c
 
 bin_PROGRAMS = cpumask_main$(EXEEXT)
 dist_cpumask_main_SOURCES = cpumask_main.c
-cpumask_main_LDADD = libcpumask.a $(LIBCUNIT_COMMON) $(LIBODP)
+cpumask_main_LDADD = libcpumask.la $(LIBCUNIT_COMMON) $(LIBODP)
diff --git a/test/validation/crypto/.gitignore b/test/validation/crypto/.gitignore
index 998752b..0ac55e3 100644
--- a/test/validation/crypto/.gitignore
+++ b/test/validation/crypto/.gitignore
@@ -1,2 +1 @@
 crypto_main
-libcrypto.a
diff --git a/test/validation/crypto/Makefile.am b/test/validation/crypto/Makefile.am
index 3bf5c56..6c7a94b 100644
--- a/test/validation/crypto/Makefile.am
+++ b/test/validation/crypto/Makefile.am
@@ -1,9 +1,9 @@
 include ../Makefile.inc
 
-noinst_LIBRARIES = libcrypto.a
-libcrypto_a_SOURCES = crypto.c \
-		      odp_crypto_test_inp.c
+noinst_LTLIBRARIES = libcrypto.la
+libcrypto_la_SOURCES = crypto.c \
+		       odp_crypto_test_inp.c
 
 bin_PROGRAMS = crypto_main$(EXEEXT)
 dist_crypto_main_SOURCES = crypto_main.c
-crypto_main_LDADD = libcrypto.a $(LIBCUNIT_COMMON) $(LIBODP)
+crypto_main_LDADD = libcrypto.la $(LIBCUNIT_COMMON) $(LIBODP)
diff --git a/test/validation/errno/.gitignore b/test/validation/errno/.gitignore
index b2aafc4..12256e3 100644
--- a/test/validation/errno/.gitignore
+++ b/test/validation/errno/.gitignore
@@ -1,2 +1 @@
 errno_main
-liberrno.a
diff --git a/test/validation/errno/Makefile.am b/test/validation/errno/Makefile.am
index 0ac5d65..ab3ef88 100644
--- a/test/validation/errno/Makefile.am
+++ b/test/validation/errno/Makefile.am
@@ -1,8 +1,8 @@
 include ../Makefile.inc
 
-noinst_LIBRARIES = liberrno.a
-liberrno_a_SOURCES = errno.c
+noinst_LTLIBRARIES = liberrno.la
+liberrno_la_SOURCES = errno.c
 
 bin_PROGRAMS = errno_main$(EXEEXT)
 dist_errno_main_SOURCES = errno_main.c
-errno_main_LDADD = liberrno.a $(LIBCUNIT_COMMON) $(LIBODP)
+errno_main_LDADD = liberrno.la $(LIBCUNIT_COMMON) $(LIBODP)
diff --git a/test/validation/init/.gitignore b/test/validation/init/.gitignore
index 79eb713..f433708 100644
--- a/test/validation/init/.gitignore
+++ b/test/validation/init/.gitignore
@@ -1,4 +1,3 @@
-libinit.a
 init_main_abort
 init_main_log
 init_main_ok
diff --git a/test/validation/init/Makefile.am b/test/validation/init/Makefile.am
index 8fdafb3..a54e29a 100644
--- a/test/validation/init/Makefile.am
+++ b/test/validation/init/Makefile.am
@@ -1,6 +1,6 @@
 include ../Makefile.inc
-noinst_LIBRARIES = libinit.a
-libinit_a_SOURCES = init.c
+noinst_LTLIBRARIES = libinit.la
+libinit_la_SOURCES = init.c
 
 # most platforms are expected not to support multiple ODP inits
 # following each other: therefore 3 separate binaries are
@@ -9,6 +9,6 @@ bin_PROGRAMS = init_main_abort$(EXEEXT) init_main_log$(EXEEXT) init_main_ok$(EXE
 dist_init_main_abort_SOURCES = init_main_abort.c
 dist_init_main_log_SOURCES   = init_main_log.c
 dist_init_main_ok_SOURCES    = init_main_ok.c
-init_main_abort_LDADD = libinit.a $(LIBCUNIT_COMMON) $(LIBODP)
-init_main_log_LDADD   = libinit.a $(LIBCUNIT_COMMON) $(LIBODP)
-init_main_ok_LDADD    = libinit.a $(LIBCUNIT_COMMON) $(LIBODP)
+init_main_abort_LDADD = libinit.la $(LIBCUNIT_COMMON) $(LIBODP)
+init_main_log_LDADD   = libinit.la $(LIBCUNIT_COMMON) $(LIBODP)
+init_main_ok_LDADD    = libinit.la $(LIBCUNIT_COMMON) $(LIBODP)
diff --git a/test/validation/packet/.gitignore b/test/validation/packet/.gitignore
index 36fb9d3..c05530d 100644
--- a/test/validation/packet/.gitignore
+++ b/test/validation/packet/.gitignore
@@ -1,2 +1 @@
-libpacket.a
 packet_main
diff --git a/test/validation/packet/Makefile.am b/test/validation/packet/Makefile.am
index 8e58808..7ba7a47 100644
--- a/test/validation/packet/Makefile.am
+++ b/test/validation/packet/Makefile.am
@@ -1,8 +1,8 @@
 include ../Makefile.inc
 
-noinst_LIBRARIES = libpacket.a
-libpacket_a_SOURCES = packet.c
+noinst_LTLIBRARIES = libpacket.la
+libpacket_la_SOURCES = packet.c
 
 bin_PROGRAMS = packet_main$(EXEEXT)
 dist_packet_main_SOURCES = packet_main.c
-packet_main_LDADD = libpacket.a $(LIBCUNIT_COMMON) $(LIBODP)
+packet_main_LDADD = libpacket.la $(LIBCUNIT_COMMON) $(LIBODP)
diff --git a/test/validation/pktio/.gitignore b/test/validation/pktio/.gitignore
index ab2eec4..1a5dd46 100644
--- a/test/validation/pktio/.gitignore
+++ b/test/validation/pktio/.gitignore
@@ -1,2 +1 @@
-libpktio.a
 pktio_main
diff --git a/test/validation/pktio/Makefile.am b/test/validation/pktio/Makefile.am
index 0ba9b0b..86127a1 100644
--- a/test/validation/pktio/Makefile.am
+++ b/test/validation/pktio/Makefile.am
@@ -1,8 +1,8 @@
 include ../Makefile.inc
 
-noinst_LIBRARIES = libpktio.a
-libpktio_a_SOURCES = pktio.c
+noinst_LTLIBRARIES = libpktio.la
+libpktio_la_SOURCES = pktio.c
 
 bin_PROGRAMS = pktio_main$(EXEEXT)
 dist_pktio_main_SOURCES = pktio_main.c
-pktio_main_LDADD = libpktio.a $(LIBCUNIT_COMMON) $(LIBODP)
+pktio_main_LDADD = libpktio.la $(LIBCUNIT_COMMON) $(LIBODP)
diff --git a/test/validation/pool/.gitignore b/test/validation/pool/.gitignore
index 2c67c9f..fc91b28 100644
--- a/test/validation/pool/.gitignore
+++ b/test/validation/pool/.gitignore
@@ -1,2 +1 @@
-libpool.a
 pool_main
diff --git a/test/validation/pool/Makefile.am b/test/validation/pool/Makefile.am
index dbd7963..97f3eb4 100644
--- a/test/validation/pool/Makefile.am
+++ b/test/validation/pool/Makefile.am
@@ -1,8 +1,8 @@
 include ../Makefile.inc
 
-noinst_LIBRARIES = libpool.a
-libpool_a_SOURCES = pool.c
+noinst_LTLIBRARIES = libpool.la
+libpool_la_SOURCES = pool.c
 
 bin_PROGRAMS = pool_main$(EXEEXT)
 dist_pool_main_SOURCES = pool_main.c
-pool_main_LDADD = libpool.a $(LIBCUNIT_COMMON) $(LIBODP)
+pool_main_LDADD = libpool.la $(LIBCUNIT_COMMON) $(LIBODP)
diff --git a/test/validation/queue/.gitignore b/test/validation/queue/.gitignore
index c9e4029..469506a 100644
--- a/test/validation/queue/.gitignore
+++ b/test/validation/queue/.gitignore
@@ -1,2 +1 @@
-libqueue.a
 queue_main
diff --git a/test/validation/queue/Makefile.am b/test/validation/queue/Makefile.am
index 3220f8c..adeefc7 100644
--- a/test/validation/queue/Makefile.am
+++ b/test/validation/queue/Makefile.am
@@ -1,8 +1,8 @@
 include ../Makefile.inc
 
-noinst_LIBRARIES = libqueue.a
-libqueue_a_SOURCES = queue.c
+noinst_LTLIBRARIES = libqueue.la
+libqueue_la_SOURCES = queue.c
 
 bin_PROGRAMS = queue_main$(EXEEXT)
 dist_queue_main_SOURCES = queue_main.c
-queue_main_LDADD = libqueue.a $(LIBCUNIT_COMMON) $(LIBODP)
+queue_main_LDADD = libqueue.la $(LIBCUNIT_COMMON) $(LIBODP)
diff --git a/test/validation/random/.gitignore b/test/validation/random/.gitignore
index 5ae7ebf..2c88ec0 100644
--- a/test/validation/random/.gitignore
+++ b/test/validation/random/.gitignore
@@ -1,2 +1 @@
 random_main
-librandom.a
diff --git a/test/validation/random/Makefile.am b/test/validation/random/Makefile.am
index 2f39547..85056d5 100644
--- a/test/validation/random/Makefile.am
+++ b/test/validation/random/Makefile.am
@@ -1,8 +1,8 @@
 include ../Makefile.inc
 
-noinst_LIBRARIES = librandom.a
-librandom_a_SOURCES = random.c
+noinst_LTLIBRARIES = librandom.la
+librandom_la_SOURCES = random.c
 
 bin_PROGRAMS = random_main$(EXEEXT)
 dist_random_main_SOURCES = random_main.c
-random_main_LDADD = librandom.a $(LIBCUNIT_COMMON) $(LIBODP)
+random_main_LDADD = librandom.la $(LIBCUNIT_COMMON) $(LIBODP)
diff --git a/test/validation/scheduler/.gitignore b/test/validation/scheduler/.gitignore
index 03a6f39..b4eb300 100644
--- a/test/validation/scheduler/.gitignore
+++ b/test/validation/scheduler/.gitignore
@@ -1,2 +1 @@
-libscheduler.a
 scheduler_main
diff --git a/test/validation/scheduler/Makefile.am b/test/validation/scheduler/Makefile.am
index 8224a66..d569691 100644
--- a/test/validation/scheduler/Makefile.am
+++ b/test/validation/scheduler/Makefile.am
@@ -1,8 +1,8 @@
 include ../Makefile.inc
 
-noinst_LIBRARIES = libscheduler.a
-libscheduler_a_SOURCES = scheduler.c
+noinst_LTLIBRARIES = libscheduler.la
+libscheduler_la_SOURCES = scheduler.c
 
 bin_PROGRAMS = scheduler_main$(EXEEXT)
 dist_scheduler_main_SOURCES = scheduler_main.c
-scheduler_main_LDADD = libscheduler.a $(LIBCUNIT_COMMON) $(LIBODP)
+scheduler_main_LDADD = libscheduler.la $(LIBCUNIT_COMMON) $(LIBODP)
diff --git a/test/validation/shmem/.gitignore b/test/validation/shmem/.gitignore
index 3cb00eb..4d82fd5 100644
--- a/test/validation/shmem/.gitignore
+++ b/test/validation/shmem/.gitignore
@@ -1,2 +1 @@
 shmem_main
-libshmem.a
diff --git a/test/validation/shmem/Makefile.am b/test/validation/shmem/Makefile.am
index eb808ad..d81303d 100644
--- a/test/validation/shmem/Makefile.am
+++ b/test/validation/shmem/Makefile.am
@@ -1,8 +1,8 @@
 include ../Makefile.inc
 
-noinst_LIBRARIES = libshmem.a
-libshmem_a_SOURCES = shmem.c
+noinst_LTLIBRARIES = libshmem.la
+libshmem_la_SOURCES = shmem.c
 
 bin_PROGRAMS = shmem_main$(EXEEXT)
 dist_shmem_main_SOURCES = shmem_main.c
-shmem_main_LDADD = libshmem.a $(LIBCUNIT_COMMON) $(LIBODP)
+shmem_main_LDADD = libshmem.la $(LIBCUNIT_COMMON) $(LIBODP)
diff --git a/test/validation/synchronizers/.gitignore b/test/validation/synchronizers/.gitignore
index 3e0ff4a..6aad9df 100644
--- a/test/validation/synchronizers/.gitignore
+++ b/test/validation/synchronizers/.gitignore
@@ -1,2 +1 @@
 synchronizers_main
-libsynchronizers.a
diff --git a/test/validation/synchronizers/Makefile.am b/test/validation/synchronizers/Makefile.am
index ca412bb..ecb9886 100644
--- a/test/validation/synchronizers/Makefile.am
+++ b/test/validation/synchronizers/Makefile.am
@@ -1,8 +1,8 @@
 include ../Makefile.inc
 
-noinst_LIBRARIES = libsynchronizers.a
-libsynchronizers_a_SOURCES = synchronizers.c
+noinst_LTLIBRARIES = libsynchronizers.la
+libsynchronizers_la_SOURCES = synchronizers.c
 
 bin_PROGRAMS = synchronizers_main$(EXEEXT)
 dist_synchronizers_main_SOURCES = synchronizers_main.c
-synchronizers_main_LDADD = libsynchronizers.a $(LIBCUNIT_COMMON) $(LIBODP)
+synchronizers_main_LDADD = libsynchronizers.la $(LIBCUNIT_COMMON) $(LIBODP)
diff --git a/test/validation/system/.gitignore b/test/validation/system/.gitignore
index 7bb1f81..347b1ee 100644
--- a/test/validation/system/.gitignore
+++ b/test/validation/system/.gitignore
@@ -1,2 +1 @@
-libsystem.a
 system_main
diff --git a/test/validation/system/Makefile.am b/test/validation/system/Makefile.am
index f68fe77..dd7759c 100644
--- a/test/validation/system/Makefile.am
+++ b/test/validation/system/Makefile.am
@@ -1,8 +1,8 @@
 include ../Makefile.inc
 
-noinst_LIBRARIES = libsystem.a
-libsystem_a_SOURCES = system.c
+noinst_LTLIBRARIES = libsystem.la
+libsystem_la_SOURCES = system.c
 
 bin_PROGRAMS = system_main$(EXEEXT)
 dist_system_main_SOURCES = system_main.c
-system_main_LDADD = libsystem.a $(LIBCUNIT_COMMON) $(LIBODP)
+system_main_LDADD = libsystem.la $(LIBCUNIT_COMMON) $(LIBODP)
diff --git a/test/validation/thread/.gitignore b/test/validation/thread/.gitignore
index 3b80ec1..ab1787d 100644
--- a/test/validation/thread/.gitignore
+++ b/test/validation/thread/.gitignore
@@ -1,2 +1 @@
-libthread.a
 thread_main
diff --git a/test/validation/thread/Makefile.am b/test/validation/thread/Makefile.am
index 218a810..3e2b68e 100644
--- a/test/validation/thread/Makefile.am
+++ b/test/validation/thread/Makefile.am
@@ -1,8 +1,8 @@
 include ../Makefile.inc
 
-noinst_LIBRARIES = libthread.a
-libthread_a_SOURCES = thread.c
+noinst_LTLIBRARIES = libthread.la
+libthread_la_SOURCES = thread.c
 
 bin_PROGRAMS = thread_main$(EXEEXT)
 dist_thread_main_SOURCES = thread_main.c
-thread_main_LDADD = libthread.a $(LIBCUNIT_COMMON) $(LIBODP)
+thread_main_LDADD = libthread.la $(LIBCUNIT_COMMON) $(LIBODP)
diff --git a/test/validation/time/.gitignore b/test/validation/time/.gitignore
index 0bc4759..0ef3e61 100644
--- a/test/validation/time/.gitignore
+++ b/test/validation/time/.gitignore
@@ -1,2 +1 @@
 time_main
-libtime.a
diff --git a/test/validation/time/Makefile.am b/test/validation/time/Makefile.am
index fb53959..418107d 100644
--- a/test/validation/time/Makefile.am
+++ b/test/validation/time/Makefile.am
@@ -1,8 +1,8 @@
 include ../Makefile.inc
 
-noinst_LIBRARIES = libtime.a
-libtime_a_SOURCES = time.c
+noinst_LTLIBRARIES = libtime.la
+libtime_la_SOURCES = time.c
 
 bin_PROGRAMS = time_main$(EXEEXT)
 dist_time_main_SOURCES = time_main.c
-time_main_LDADD = libtime.a $(LIBCUNIT_COMMON) $(LIBODP)
+time_main_LDADD = libtime.la $(LIBCUNIT_COMMON) $(LIBODP)
diff --git a/test/validation/timer/.gitignore b/test/validation/timer/.gitignore
index 56792c4..74e8fa9 100644
--- a/test/validation/timer/.gitignore
+++ b/test/validation/timer/.gitignore
@@ -1,2 +1 @@
 timer_main
-libtimer.a
diff --git a/test/validation/timer/Makefile.am b/test/validation/timer/Makefile.am
index 0db4986..591dfb6 100644
--- a/test/validation/timer/Makefile.am
+++ b/test/validation/timer/Makefile.am
@@ -1,8 +1,8 @@
 include ../Makefile.inc
 
-noinst_LIBRARIES = libtimer.a
-libtimer_a_SOURCES = timer.c
+noinst_LTLIBRARIES = libtimer.la
+libtimer_la_SOURCES = timer.c
 
 bin_PROGRAMS = timer_main$(EXEEXT)
 dist_timer_main_SOURCES = timer_main.c
-timer_main_LDADD = libtimer.a $(LIBCUNIT_COMMON) $(LIBODP)
+timer_main_LDADD = libtimer.la $(LIBCUNIT_COMMON) $(LIBODP)
