Just for completeness: I heard from some developers that Chromium has a component build option which creates multiple .so's from included sources instead of one big executable.
This is documented at http://www.chromium.org/developers/how-tos/component-build Unfortunately https://code.google.com/p/chromium/wiki/LinuxBuildInstructions says that: "Linker Crashes If, during the final link stage: LINK(target) out/Debug/chrome You get an error like: collect2: ld terminated with signal 6 Aborted terminate called after throwing an instance of 'std::bad_alloc' collect2: ld terminated with signal 11 [Segmentation fault], core dumped you are probably running out of memory when linking. Try one of: Use the gold linker Build on a 64-bit computer Build in Release mode (debugging symbols require a lot of memory) Build as shared libraries (note: this build is for developers only, and may have broken functionality)" Anyway, I gave it a try. Debian packaging changes I use, also include switch to ld.gold and ccache compiler cache to speed up rebuilds: --- tmp/debian/chromium.install 2014-10-10 03:49:16.000000000 +0200 +++ chromium-browser-38.0.2125.101/debian/chromium.install 2014-10-15 14:33:22.060233798 +0200 @@ -2,10 +2,12 @@ out/Release/chromium usr/lib/chromium out/Release/chrome-sandbox usr/lib/chromium out/Release/*.so usr/lib/chromium +out/Release/lib/*.so usr/lib/chromium out/Release/*.pak usr/lib/chromium out/Release/icudtl.dat usr/lib/chromium -out/Release/resources/*.pak usr/lib/chromium/locales +out/Release/locales/*.pak usr/lib/chromium/locales +out/Release/pseudo_locales/*.pak usr/lib/chromium/locales debian/presubj usr/share/bug/chromium iff -rup tmp/debian/rules chromium-browser-38.0.2125.101/debian/rules --- tmp/debian/rules 2014-10-10 05:52:39.000000000 +0200 +++ chromium-browser-38.0.2125.101/debian/rules 2014-10-15 14:06:21.151701940 +0200 @@ -1,16 +1,19 @@ #!/usr/bin/make -f # enable verbose build messages -export DH_VERBOSE=1 +DH_VERBOSE=1 + +CC := ccache clang +CXX := ccache clang++ # enable all build hardening flags -export DEB_BUILD_MAINT_OPTIONS=hardening=+all +DEB_BUILD_MAINT_OPTIONS=hardening=+all -# linker flags to avoid memory allocation issues on i386 -export LDFLAGS+=-Wl,--no-keep-memory -Wl,--reduce-memory-overheads -Wl,--hash-size=7919 +# linker flags to avoid memory allocation issues on i386, use ld.gold instead +LDFLAGS+=-fuse-ld=gold # more verbose linker output -export LDFLAGS+=-Wl,--trace -Wl,--stats +LDFLAGS+=-Wl,--trace -Wl,--stats # treat all warnings as errors defines=werror= @@ -41,6 +44,7 @@ defines+=enable_hidpi=1 \ linux_link_gsettings=1 \ linux_link_libspeechd=1 \ linux_link_gnome_keyring=1 \ + component=shared_library \ # system libraries to use defines+=use_system_re2=1 \ @@ -100,7 +105,9 @@ flotpaths=/usr/share/javascript/jquery/* override_dh_auto_configure: for file in $(flotpaths); do ln -sf $$file third_party/flot; done + CC="${CC}" CXX="${CXX}" LDFLAGS="${LDFLAGS}" \ GYP_DEFINES="$(defines)" ./build/gyp_chromium $(options) + CC="${CC}" CXX="${CXX}" LDFLAGS="${LDFLAGS}" \ override_dh_auto_build: ninja $(njobs) -C out/Release chrome chrome_sandbox chromedriver @@ -124,6 +131,10 @@ override_dh_fixperms: override_dh_strip: dh_strip --dbg-package=chromium-dbg +override_dh_shlibdeps: + # exclude the internal libs which miss proper SONAME etc + dh_shlibdeps -Xusr/lib/chromium/lib/ -- -ldebian/chromium/usr/lib/chromium/ -ldebian/chromium/usr/lib/chromium/lib/ + override_dh_auto_clean: rm -rf out Makefile third_party/flot/* rm -rf out Makefile third_party/flot/* find . -name \*.mk -execdir rm -rf {} \; With these changes chromium builds on i686 but running the binary with the new shared objects fails: ~/src/chromium-browser-38.0.2125.101/out/Release$ LD_LIBRARY_PATH=.:./lib ./chromium [libprotobuf ERROR google/protobuf/descriptor_database.cc:57] File already exists in database: phonenumber.proto [libprotobuf FATAL google/protobuf/descriptor.cc:1018] CHECK failed: generated_database_->Add(encoded_file_descriptor, size): terminate called after throwing an instance of 'google::protobuf::FatalException' what(): CHECK failed: generated_database_->Add(encoded_file_descriptor, size): Aborted This bug report is likely not cared by upstream or Debian packagers but maybe someone cares about natively building chromium on 32bit archs. My journey into chromium land ends here :) -Mikko -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org