Compiling static executables on old Mac OS X 10.6.8, Snow Leopard, with GCC 10 or newer

Peter Dyballa via Gcc-help <[email protected]> Sat, 21 Feb 2026 21:14:37 +0100
Newsgroups gmane.comp.gcc.help
Message-ID <[email protected]>
Hello!

I was trying to build the legacy edition of pre-release binaries for TeX Live '26 on that 15 years old Mac with modern and recommended GCC 14 (although 15 and 15 would match) – and failed (at least in my opinion):

	LiveTeXHaX pete 140 /\  otool -L TeXLive-2026/inst/bin/x86_64-apple-darwin10.8.0/xdvipsk
	TeXLive-2026/inst/bin/x86_64-apple-darwin10.8.0/xdvipsk:
		/opt/local/lib/libgcc/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.34.0)
		/opt/local/lib/libgcc/libgcc_s.1.1.dylib (compatibility version 1.0.0, current version 1.1.0)
		/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)

(otool is similar to Linux' ldd) The two shared libraries are not installed on each Mac, and so I wished they were linked in as static libraries that only exist as:

	-rw-r--r-- 1 root admin 22341536 20. Feb 13:40 /opt/local/lib/gcc14/libstdc++.a

Build of TL '26 is done via a shell script that configures and makes in dozens of directories. Its invocation was with:

	CC=gcc-mp-14 CFLAGS="-O0 -fdata-sections -ffunction-sections -static-libgcc -L/usr/lib -Wl,-dead_strip -Wl,-t -Wl,-v" CXX=g++-mp-14 CXXFLAGS="-v -O0 -stdlib=libstdc++ -static-libstdc++ -Wl,-rpath /usr/lib"

The system provides:

	-r-xr-xr-x 1 root wheel 6890816  8. Jun 2011  /usr/lib/libSystem.B.dylib
	lrwxr-xr-x 1 root wheel      17  9. Feb 12:05 /usr/lib/libSystem.dylib -> libSystem.B.dylib
	-rwxr-xr-x 1 root admin 2304336  3. Aug 2022  /usr/lib/libc++.1.dylib
	lrwxr-xr-x 1 root admin      14  3. Aug 2022  /usr/lib/libc++.dylib -> libc++.1.dylib
	-rwxr-xr-x 1 root admin  469888  3. Aug 2022  /usr/lib/libc++abi.dylib
	lrwxr-xr-x 1 root wheel      15  9. Feb 12:05 /usr/lib/libc.dylib -> libSystem.dylib

Can I reach my aim with GCC 14 or 15? Or is GCC 10 better suited (-std=c++17 needs to be supported)? (The MacPorts folks, that foster the MacPorts package manager with which I built GCC, use GCC 10 to bootstrap the software from almost nothing, just a small installer package.)

Or are there some more elaborate options for creating static executables? (Or am only I misinterpreting otool's output?) The steps to create the xdvipsk executable were (taken from build log):

	/bin/sh ./libtool  --tag=CXX   --mode=link g++-mp-14  -v -O0 -stdlib=libstdc++ -static-libstdc++ -Wl,-rpath /usr/lib   -o xdvipsk xdvipsk-bbox.o xdvipsk-bitmapenc.o xdvipsk-charcode.o xdvipsk-color.o xdvipsk-dopage.o xdvipsk-dosection.o xdvipsk-dospecial.o xdvipsk-download.o xdvipsk-dpicheck.o xdvipsk-drawPS.o xdvipsk-dviinput.o xdvipsk-emspecialex.o xdvipsk-finclude.o xdvipsk-fontdef.o xdvipsk-glyphmap.o xdvipsk-header.o xdvipsk-hps.o xdvipsk-loadfont.o xdvipsk-luamap.o xdvipsk-makefont.o xdvipsk-output.o xdvipsk-papersiz.o xdvipsk-pprescan.o xdvipsk-prescan.o xdvipsk-repack.o xdvipsk-resident.o xdvipsk-scalewidth.o xdvipsk-scanpage.o xdvipsk-search.o xdvipsk-sfntload.o xdvipsk-skippage.o xdvipsk-t1part.o xdvipsk-tfmload.o xdvipsk-unpack.o xdvipsk-virtualfont.o xdvipsk-writecid.o xdvipsk-writet1.o xdvipsk-xdvips.o otflib/xdvipsk-cff.o otflib/xdvipsk-cff_dict.o otflib/xdvipsk-cidsysinfo.o otflib/xdvipsk-cidtype0.o otflib/xdvipsk-cidtype2.o otflib/xdvipsk-cmap.o otflib/xdvipsk-cmap_write.o otflib/xdvipsk-cs_type2.o otflib/xdvipsk-dpxfile.o otflib/xdvipsk-dpxutil.o otflib/xdvipsk-error.o otflib/xdvipsk-mem.o otflib/xdvipsk-mfileio.o otflib/xdvipsk-numbers.o otflib/xdvipsk-sfnt.o otflib/xdvipsk-tt_aux.o otflib/xdvipsk-tt_cmap.o otflib/xdvipsk-tt_glyf.o otflib/xdvipsk-tt_post.o otflib/xdvipsk-tt_table.o otflib/xdvipsk-unicode.o  libdvipsgraph.a ..../TeXLive-2026/Work/texk/kpathsea/libkpathsea.la ..../TeXLive-2026/Work/libs/lua53/libtexlua53.la libtiff.a ..../TeXLive-2026/Work/libs/libpng/libpng.a ..../TeXLive-2026/Work/libs/zlib/libz.a libjpeg.a ..../TeXLive-2026/Work/libs/freetype2/libfreetype.a -lstdc++
	libtool: link: g++-mp-14 -v -O0 -stdlib=libstdc++ -static-libstdc++ -o xdvipsk xdvipsk-bbox.o xdvipsk-bitmapenc.o xdvipsk-charcode.o xdvipsk-color.o xdvipsk-dopage.o xdvipsk-dosection.o xdvipsk-dospecial.o xdvipsk-download.o xdvipsk-dpicheck.o xdvipsk-drawPS.o xdvipsk-dviinput.o xdvipsk-emspecialex.o xdvipsk-finclude.o xdvipsk-fontdef.o xdvipsk-glyphmap.o xdvipsk-header.o xdvipsk-hps.o xdvipsk-loadfont.o xdvipsk-luamap.o xdvipsk-makefont.o xdvipsk-output.o xdvipsk-papersiz.o xdvipsk-pprescan.o xdvipsk-prescan.o xdvipsk-repack.o xdvipsk-resident.o xdvipsk-scalewidth.o xdvipsk-scanpage.o xdvipsk-search.o xdvipsk-sfntload.o xdvipsk-skippage.o xdvipsk-t1part.o xdvipsk-tfmload.o xdvipsk-unpack.o xdvipsk-virtualfont.o xdvipsk-writecid.o xdvipsk-writet1.o xdvipsk-xdvips.o otflib/xdvipsk-cff.o otflib/xdvipsk-cff_dict.o otflib/xdvipsk-cidsysinfo.o otflib/xdvipsk-cidtype0.o otflib/xdvipsk-cidtype2.o otflib/xdvipsk-cmap.o otflib/xdvipsk-cmap_write.o otflib/xdvipsk-cs_type2.o otflib/xdvipsk-dpxfile.o otflib/xdvipsk-dpxutil.o otflib/xdvipsk-error.o otflib/xdvipsk-mem.o otflib/xdvipsk-mfileio.o otflib/xdvipsk-numbers.o otflib/xdvipsk-sfnt.o otflib/xdvipsk-tt_aux.o otflib/xdvipsk-tt_cmap.o otflib/xdvipsk-tt_glyf.o otflib/xdvipsk-tt_post.o otflib/xdvipsk-tt_table.o otflib/xdvipsk-unicode.o -Wl,-bind_at_load  libdvipsgraph.a ..../TeXLive-2026/Work/texk/kpathsea/.libs/libkpathsea.a -L/usr/lib ..../TeXLive-2026/Work/libs/lua53/.libs/libtexlua53.a libtiff.a ..../TeXLive-2026/Work/libs/libpng/libpng.a ..../TeXLive-2026/Work/libs/zlib/libz.a libjpeg.a ..../TeXLive-2026/Work/libs/freetype2/libfreetype.a /opt/local/lib/gcc14/libstdc++.dylib
	Using built-in specs.
	COLLECT_GCC=g++-mp-14
	COLLECT_LTO_WRAPPER=/opt/local/libexec/gcc/x86_64-apple-darwin10/14.3.0/lto-wrapper
	Target: x86_64-apple-darwin10
	Configured with: /opt/local/var/macports/build/gcc14-f785cd4b/work/gcc-14.3.0/configure --prefix=/opt/local --build=x86_64-apple-darwin10 --enable-languages=c,c++,objc,obj-c++,lto,fortran,m2,jit --libdir=/opt/local/lib/gcc14 --infodir=/opt/local/share/info --mandir=/opt/local/share/man --datarootdir=/opt/local/share/gcc-14 --with-local-prefix=/opt/local --with-system-zlib --disable-nls --program-suffix=-mp-14 --with-gxx-include-dir=/opt/local/include/gcc14/c++/ --with-gmp=/opt/local --with-mpfr=/opt/local --with-mpc=/opt/local --with-isl=/opt/local --with-zstd=/opt/local --enable-checking=release --disable-multilib --enable-lto --enable-libstdcxx-time --without-build-config --with-as=/opt/local/bin/as --with-ld=/opt/local/bin/ld --with-ar=/opt/local/bin/ar --with-bugurl=https://trac.macports.org/newticket --enable-host-shared --with-darwin-extra-rpath=/opt/local/lib/libgcc --with-libiconv-prefix=/opt/local --disable-tls --with-gxx-libcxx-include-dir=/opt/local/libexec/gcc14/libc++/include/c++/v1 --with-pkgversion='MacPorts gcc14 14.3.0_0+stdlib_flag'
	Thread model: posix
	Supported LTO compression algorithms: zlib zstd
	gcc version 14.3.0 (MacPorts gcc14 14.3.0_0+stdlib_flag)
	COMPILER_PATH=/opt/local/libexec/gcc/x86_64-apple-darwin10/14.3.0/:/opt/local/libexec/gcc/x86_64-apple-darwin10/14.3.0/:/opt/local/libexec/gcc/x86_64-apple-darwin10/:/opt/local/lib/gcc14/gcc/x86_64-apple-darwin10/14.3.0/:/opt/local/lib/gcc14/gcc/x86_64-apple-darwin10/
	LIBRARY_PATH=/opt/local/lib/gcc14/gcc/x86_64-apple-darwin10/14.3.0/:/opt/local/lib/gcc14/gcc/x86_64-apple-darwin10/14.3.0/../../../
	COLLECT_GCC_OPTIONS='-v' '-O0' '-stdlib=libstdc++' '-static-libstdc++' '-o' 'xdvipsk' '-L/usr/lib' '-mmacosx-version-min=10.6.0' '-asm_macosx_version_min=10.6' '-nodefaultexport' '-shared-libgcc' '-mtune=core2' '-dumpdir' 'xdvipsk.'
	 /opt/local/libexec/gcc/x86_64-apple-darwin10/14.3.0/collect2 -demangle -dynamic -arch x86_64 -macosx_version_min 10.6.0 -o xdvipsk -lcrt1.10.6.o -L/usr/lib -L/opt/local/lib/gcc14/gcc/x86_64-apple-darwin10/14.3.0 -L/opt/local/lib/gcc14/gcc/x86_64-apple-darwin10/14.3.0/../../.. -lemutls_w -lheapt_w xdvipsk-bbox.o xdvipsk-bitmapenc.o xdvipsk-charcode.o xdvipsk-color.o xdvipsk-dopage.o xdvipsk-dosection.o xdvipsk-dospecial.o xdvipsk-download.o xdvipsk-dpicheck.o xdvipsk-drawPS.o xdvipsk-dviinput.o xdvipsk-emspecialex.o xdvipsk-finclude.o xdvipsk-fontdef.o xdvipsk-glyphmap.o xdvipsk-header.o xdvipsk-hps.o xdvipsk-loadfont.o xdvipsk-luamap.o xdvipsk-makefont.o xdvipsk-output.o xdvipsk-papersiz.o xdvipsk-pprescan.o xdvipsk-prescan.o xdvipsk-repack.o xdvipsk-resident.o xdvipsk-scalewidth.o xdvipsk-scanpage.o xdvipsk-search.o xdvipsk-sfntload.o xdvipsk-skippage.o xdvipsk-t1part.o xdvipsk-tfmload.o xdvipsk-unpack.o xdvipsk-virtualfont.o xdvipsk-writecid.o xdvipsk-writet1.o xdvipsk-xdvips.o otflib/xdvipsk-cff.o otflib/xdvipsk-cff_dict.o otflib/xdvipsk-cidsysinfo.o otflib/xdvipsk-cidtype0.o otflib/xdvipsk-cidtype2.o otflib/xdvipsk-cmap.o otflib/xdvipsk-cmap_write.o otflib/xdvipsk-cs_type2.o otflib/xdvipsk-dpxfile.o otflib/xdvipsk-dpxutil.o otflib/xdvipsk-error.o otflib/xdvipsk-mem.o otflib/xdvipsk-mfileio.o otflib/xdvipsk-numbers.o otflib/xdvipsk-sfnt.o otflib/xdvipsk-tt_aux.o otflib/xdvipsk-tt_cmap.o otflib/xdvipsk-tt_glyf.o otflib/xdvipsk-tt_post.o otflib/xdvipsk-tt_table.o otflib/xdvipsk-unicode.o -bind_at_load libdvipsgraph.a ..../TeXLive-2026/Work/texk/kpathsea/.libs/libkpathsea.a ..../TeXLive-2026/Work/libs/lua53/.libs/libtexlua53.a libtiff.a ..../TeXLive-2026/Work/libs/libpng/libpng.a ..../TeXLive-2026/Work/libs/zlib/libz.a libjpeg.a ..../TeXLive-2026/Work/libs/freetype2/libfreetype.a /opt/local/lib/gcc14/libstdc++.dylib /opt/local/lib/gcc14/gcc/x86_64-apple-darwin10/14.3.0/../../../libstdc++.a -ld10-uwfef -lgcc_s.1.1 -lgcc -lSystem -no_compact_unwind -rpath /opt/local/lib/libgcc

Both /opt/local/lib/gcc14/libstdc++.dylib and /opt/local/lib/gcc14/gcc/x86_64-apple-darwin10/14.3.0/../../../libstdc++.a == /opt/local/lib/gcc14/libstdc++.a are linked… A new -rpath setting is introduced: /opt/local/lib/libgcc, and COLLECT_GCC_OPTIONS contains '-shared-libgcc' – because there is no static version from the compiler, only the system?


--
Greetings

  Pete

Wasting time is an important part of living.