diff --git a/.gitignore b/.gitignore
index a190b9e440c75dfb76473e86368e7d8d49816691..75606983cfca32e255aa97053dad9d5efd0f5079 100644
--- a/.gitignore
+++ b/.gitignore
@@ -29,6 +29,8 @@
 *~
 *.swp
 
+debug/*
+release/*
 bin/*
 bin-release/*
 bin-debug/*
@@ -39,6 +41,8 @@ doc/*
 **/bin
 **/bin-release
 **/bin-debug
+**/release
+**/debug
 **/doc
 **/obj
 **/obj-release
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 875c1609fab299030dd0fa167067a578907b2f84..2d431d1d1e0f4ca2985c77b814c22bf9890d6282 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -125,7 +125,10 @@ test-clang:
     # coreutils are needed because of timeout command used in tests.
     EXTRA_PKGS: bc coreutils python3
   script:
-    - for test in $(ls tests.*.sh); do ./${test} release/bin ${JOBS}; touch release/bin/log_tests.txt; cat release/bin/log_tests.txt; done
+    - cd release
+    - for test in $(ls */test-alib2*); do ./${test} || exit 1; done
+    - cd ..
+    - for test in $(ls tests.*.sh); do ./${test} release/bin ${JOBS} || exit 1; touch release/bin/log_tests.txt; cat release/bin/log_tests.txt; done
   stage: test
 
 test-cmake-gcc:
diff --git a/CMake/CMakeLists_root.txt b/CMake/CMakeLists_root.txt
index 65f4d3d6a51106d52160c339636c7b8cc137a30a..0571fb874997c245a39fad8072d04e07e0a3a1e5 100644
--- a/CMake/CMakeLists_root.txt
+++ b/CMake/CMakeLists_root.txt
@@ -47,6 +47,8 @@ set(ALIB_BUILD_FLAGS_COMMON -Wall -pedantic -pipe -Wextra -Werror -Wshadow -Wpoi
 set(ALIB_BUILD_FLAGS_DEBUG ${{ALIB_BUILD_FLAGS_COMMON}} -Og)
 set(ALIB_BUILD_FLAGS_RELEASE ${{ALIB_BUILD_FLAGS_COMMON}} -O3)
 
+set(CMAKE_EXE_LINKER_FLAGS "${{CMAKE_EXE_LINKER_FLAGS}} -Wl,-no-as-needed")
+
 if (${{CMAKE_CXX_COMPILER_ID}} STREQUAL "Clang")
     set(ALIB_BUILD_FLAGS_DEBUG ${{ALIB_BUILD_FLAGS_COMMON}} -O0)
 endif ()
diff --git a/all-cmake-debug.sh b/all-cmake-debug.sh
index 61ec7833841ee7d7f2f21b0df17e6c2223ed5ba4..222eed6fbfe4d0c7c7dac5698d5cd5042f801579 100755
--- a/all-cmake-debug.sh
+++ b/all-cmake-debug.sh
@@ -24,6 +24,10 @@ fi
 
 CXX=clang++ make -j${THREADS} || exit 1
 
+for test in $(ls */test-alib2*); do \
+  ./${test} || exit 1; \
+done
+
 if [ ! -d bin ]; then
   mkdir bin
 fi
diff --git a/all-cmake-release.sh b/all-cmake-release.sh
index b43057d59d1750e09fe77a16fb06918a707b4f31..6db9d05c02e40a5fd09c9e1412146601a39bae01 100755
--- a/all-cmake-release.sh
+++ b/all-cmake-release.sh
@@ -24,6 +24,10 @@ fi
 
 CXX=clang++ make -j${THREADS} || exit 1
 
+for test in $(ls */test-alib2*); do \
+  ./${test} || exit 1; \
+done
+
 if [ ! -d bin ]; then
   mkdir bin
 fi