M1 build issue macOS Monterey 12.1 ld: file not found: @rpath/libgcc_s.1.1.dylib for architecture arm64

Hello,

I am trying to build the owl ocaml package for macOS and I am running into the following error message:

"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -dynamic -dylib -arch arm64 -flat_namespace -platform_version macos 12.0.0 12.1 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -undefined suppress -undefined suppress -o src/owl/dllowl_stubs.so -L/opt/homebrew/Cellar/openblas/0.3.19/lib -L/usr/local/lib -no_compact_unwind src/owl/SFMT.o src/owl/airy.o src/owl/airyf.o src/owl/bdtr.o src/owl/beta.o src/owl/btdtr.o src/owl/cbrt.o src/owl/chbevl.o src/owl/chbevlf.o src/owl/chdtr.o src/owl/const.o src/owl/constf.o src/owl/dawsn.o src/owl/dawsnf.o src/owl/ellie.o src/owl/ellik.o src/owl/ellpe.o src/owl/ellpj.o src/owl/ellpk.o src/owl/exp10.o src/owl/exp2.o src/owl/expn.o src/owl/fdtr.o src/owl/fresnl.o src/owl/gamma.o src/owl/gammaf.o src/owl/gdtr.o src/owl/gels.o src/owl/hyp2f1.o src/owl/hyperg.o src/owl/hypergf.o src/owl/i0.o src/owl/i0f.o src/owl/i1.o src/owl/i1f.o src/owl/igam.o src/owl/igami.o src/owl/incbet.o src/owl/incbi.o src/owl/ivf.o src/owl/j0.o src/owl/j0f.o src/owl/j1.o src/owl/j1f.o src/owl/jnf.o src/owl/jv.o src/owl/jvf.o src/owl/k0.o src/owl/k0f.o src/owl/k1.o src/owl/k1f.o src/owl/kn.o src/owl/kolmogorov.o src/owl/lanczos.o src/owl/mtherr.o src/owl/nbdtr.o src/owl/ndtr.o src/owl/ndtri.o src/owl/owl_cblas_generated_stub.o src/owl/owl_core_utils.o src/owl/owl_dcdflib.o src/owl/owl_distribution_common_c.o src/owl/owl_fftpack_float32.o src/owl/owl_fftpack_float64.o src/owl/owl_ipmpar.o src/owl/owl_lapacke_generated_stub.o src/owl/owl_maths_special_gamma.o src/owl/owl_maths_special_impl.o src/owl/owl_maths_special_stub.o src/owl/owl_matrix_check_stub.o src/owl/owl_matrix_swap_stub.o src/owl/owl_ndarray_contract_stub.o src/owl/owl_ndarray_conv_stub.o src/owl/owl_ndarray_fma_stub.o src/owl/owl_ndarray_maths_stub.o src/owl/owl_ndarray_pool_stub.o src/owl/owl_ndarray_repeat_stub.o src/owl/owl_ndarray_slide_stub.o src/owl/owl_ndarray_sort_stub.o src/owl/owl_ndarray_transpose_stub.o src/owl/owl_ndarray_upsampling_stub.o src/owl/owl_ndarray_utils_stub.o src/owl/owl_slicing_basic_stub.o src/owl/owl_slicing_fancy_stub.o src/owl/owl_stats_dist_beta.o src/owl/owl_stats_dist_binomial.o src/owl/owl_stats_dist_cauchy.o src/owl/owl_stats_dist_chi2.o src/owl/owl_stats_dist_dirichlet.o src/owl/owl_stats_dist_exponential.o src/owl/owl_stats_dist_exponpow.o src/owl/owl_stats_dist_f.o src/owl/owl_stats_dist_gamma.o src/owl/owl_stats_dist_gaussian.o src/owl/owl_stats_dist_gennorm.o src/owl/owl_stats_dist_geometric.o src/owl/owl_stats_dist_gumbel1.o src/owl/owl_stats_dist_gumbel2.o src/owl/owl_stats_dist_hypergeometric.o src/owl/owl_stats_dist_laplace.o src/owl/owl_stats_dist_logistic.o src/owl/owl_stats_dist_lognormal.o src/owl/owl_stats_dist_logseries.o src/owl/owl_stats_dist_lomax.o src/owl/owl_stats_dist_multinomial.o src/owl/owl_stats_dist_negative_binomial.o src/owl/owl_stats_dist_noncentral_chi2.o src/owl/owl_stats_dist_noncentral_f.o src/owl/owl_stats_dist_poisson.o src/owl/owl_stats_dist_power.o src/owl/owl_stats_dist_rayleigh.o src/owl/owl_stats_dist_stub.o src/owl/owl_stats_dist_t.o src/owl/owl_stats_dist_triangular.o src/owl/owl_stats_dist_uniform.o src/owl/owl_stats_dist_vonmises.o src/owl/owl_stats_dist_wald.o src/owl/owl_stats_dist_weibull.o src/owl/owl_stats_dist_zipf.o src/owl/owl_stats_extend_misc.o src/owl/owl_stats_extend_shuffle.o src/owl/owl_stats_extend_stub.o src/owl/owl_stats_prng_stub.o src/owl/owl_stats_ziggurat.o src/owl/pdtr.o src/owl/polevlf.o src/owl/psi.o src/owl/rgamma.o src/owl/round.o src/owl/scipy_iv.o src/owl/sf_error.o src/owl/shichi.o src/owl/sici.o src/owl/sincos.o src/owl/sindg.o src/owl/spence.o src/owl/sqrtf.o src/owl/stdtr.o src/owl/struve.o src/owl/struvef.o src/owl/tandg.o src/owl/tukey.o src/owl/unity.o src/owl/yn.o src/owl/ynf.o src/owl/zeta.o src/owl/zetac.o -lopenblas -lm -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/13.0.0/lib/darwin/libclang_rt.osx.a -v
@(#)PROGRAM:ld  PROJECT:ld64-711
BUILD 21:57:24 Nov 17 2021
configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em
Library search paths:
	/opt/homebrew/Cellar/openblas/0.3.19/lib
	/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib
Framework search paths:
	/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/
ld: file not found: @rpath/libgcc_s.1.1.dylib for architecture arm64

I have found the following files:

/Library/Developer/CommandLineTools/SDKs/MacOSX11.3.sdk/usr/lib/libgcc_s.1.tbd
/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/lib/libgcc_s.1.tbd
/Library/Developer/CommandLineTools/SDKs/MacOSX11.3.sdk/usr/lib/libgcc_s.1.tbd

Which seem to be referenced via -L/Library/Developer/CommandLineTools/SDKs/MacOSX/usr/lib

Though I have been unable to get ld to properly recognize the libgcc_s.1.tbd for the ld: file not found: @rpath/libgcc_s.1.1.dylib requirement.

How do we get ld to see libgcc_s.1.tbd?

Cheers, Joe

While I have not directly solved the issue, I have learned that libgcc_s is implicitly required due to OpenBLAS and LAPACK being built by gcc and gfortran. The libgcc is likely not needed, though I have not found where it is sneaking into the builds.

I did try to just statically link to the absolute path of the homebrew dylib and the provided .tbd file without success. There is a static lib which is for x86 and not arm64.

M1 build issue macOS Monterey 12.1 ld: file not found: @rpath/libgcc_s.1.1.dylib for architecture arm64
 
 
Q