chiark / gitweb /
build-sys: Add compiler and linker flags to reduce binary size
authorGustavo Sverzut Barbieri <barbieri@profusion.mobi>
Tue, 5 Oct 2010 19:45:51 +0000 (21:45 +0200)
committerLennart Poettering <lennart@poettering.net>
Tue, 5 Oct 2010 19:45:51 +0000 (21:45 +0200)
Reduce number of exported symbols with -fvisibility=hidden by default,
this is safe as we're not generating and loadable library and our
binaries should have no exported symbol other than main(). This alone
reduces around 4kb per binary.

It will also request GCC to emit every function and data variable in
its own section, then request the linker to remove unused
sections. This reduces the size of utility tools
(/lib/systemd/systemd-*) by half or even more (in my system some
binaries went from 84kb to 32kb).

configure.ac

index 753adc5096c2de4e18e76e40db9d28ea4bde366d..562921a958f036e9f3c3851bffa3eca6ee4b87ce 100644 (file)
@@ -86,7 +86,12 @@ CC_CHECK_CFLAGS_APPEND([ \
         -ffast-math \
         -fno-common \
         -fdiagnostics-show-option \
-        -fno-strict-aliasing])
+        -fno-strict-aliasing \
+        -fvisibility=hidden \
+        -ffunction-sections \
+        -fdata-sections \
+        -Wl,--as-needed \
+        -Wl,--gc-sections])
 
 LT_PREREQ(2.2)
 LT_INIT