The Horrors That Lurk: Understanding the Linux Compiler Landscape for Developers
summary
A Java tag library fails on a Mac because the JAR bundles only a Linux amd64 shared object; the fix compiles and packages three native variants (linux/amd64, linux/arm64, darwin/arm64) and adjusts the loader to pick at runtime. Tools shown: GCC/clang (LLVM), Make, Docker buildx for multi-arch Docker builds, Quarkus, Maven and JNI. A final step swaps builder images to resolve glibc vs musl runtime mismatch (Alpine), after which the app runs in dev and production.
AI-written summary · about
chapters (11)
- 0:00Monday horror story
- 2:30Java hides compiler complexity
- 4:59GCC vs LLVM
- 6:22C to shared libraries
- 8:10Java native loader fix
- 9:14Makefile build steps
- 10:37MacOS native compilation
- 12:00Docker CPU mismatch
- 13:03Multi-arch native libraries
- 14:27Alpine C runtime
- 16:53Compatibility axes
related talks
37mToolchain Options in 2023: What's New in Compilers and Libcs?
19m"ClangBuiltLinux: What's Next?"
01h 05mTutorial: Toolchains
28m(Less Than) 50 Ways to Build Multi-Arch Containers
49mLLVMLinux: The Linux Kernel with Dragon Wings
43mLLVMLinux: Compiling the Linux Kernel with LLVM
36mThe Call of Ctooling: The Secrets Behind Native Image Building
45mCross compilation with clang and LLVM tools.
