New comment by tornaria on void-packages repository https://github.com/void-linux/void-packages/issues/37497#issuecomment-1156634752 Comment: > @tornaria (ntl) I'm not sure I understand the error. For some reason (libtool?) it using an incorrect location for `crti.o` and `crtn.o` Is this an issue with the ntl build or with libtool? Here is the relevant snippet from the log above: ``` libtool --tag=CXX --mode=link g++ -I../include -I. -fstack-clash-protection -D_FORTIFY_SOURCE=2 -march=armv8-a -O2 -pipe -fdebug-prefix-map=/builddir/ntl-11.5.1=. -pthread -o libntl.la FFT.lo FacVec.lo GF2.lo GF2E.lo GF2EX.lo GF2EXFactoring.lo GF2X.lo GF2X1.lo GF2XFactoring.lo GF2XVec.lo GetTime.lo GetPID.lo HNF.lo ctools.lo LLL.lo LLL_FP.lo LLL_QP.lo LLL_RR.lo LLL_XD.lo RR.lo WordVector.lo ZZ.lo ZZVec.lo ZZX.lo ZZX1.lo ZZXCharPoly.lo ZZXFactoring.lo ZZ_p.lo ZZ_pE.lo ZZ_pEX.lo ZZ_pEXFactoring.lo ZZ_pX.lo ZZ_pX1.lo ZZ_pXCharPoly.lo ZZ_pXFactoring.lo fileio.lo lip.lo lzz_p.lo lzz_pE.lo lzz_pEX.lo lzz_pEXFactoring.lo lzz_pX.lo lzz_pX1.lo lzz_pXCharPoly.lo lzz_pXFactoring.lo mat_GF2.lo mat_GF2E.lo mat_RR.lo mat_ZZ.lo mat_ZZ_p.lo mat_ZZ_pE.lo mat_lzz_p.lo mat_lzz_pE.lo mat_poly_ZZ.lo mat_poly_ZZ_p.lo mat_poly_lzz_p.lo quad_float.lo quad_float1.lo tools.lo vec_GF2.lo vec_GF2E.lo vec_RR.lo vec_ZZ.lo vec_ZZ_p.lo vec_ZZ_pE.lo vec_lzz_p.lo vec_lzz_pE.lo xdouble.lo G_LLL_FP.lo G_LLL_QP.lo G_LLL_XD.lo G_LLL_RR.lo thread.lo BasicThreadPool.lo MatPrime.lo pd_FFT.lo -lgmp -lgf2x -lm -lpthread -rpath /usr/lib -version-info `cat VERSION_INFO` #LSHAR libtool: link: cc -fPIC -DPIC -shared -nostdlib /usr/lib/gcc/aarch64-linux-musl/10.2.1/../../../../aarch64-linux-musl/lib/../lib64/crti.o /usr/lib/gcc/aarch64-linux-musl/10.2.1/crtbeginS.o .libs/FFT.o .libs/FacVec.o .libs/GF2.o .libs/GF2E.o .libs/GF2EX.o .libs/GF2EXFactoring.o .libs/GF2X.o .libs/GF2X1.o .libs/GF2XFactoring.o .libs/GF2XVec.o .libs/GetTime.o .libs/GetPID.o .libs/HNF.o .libs/ctools.o .libs/LLL.o .libs/LLL_FP.o .libs/LLL_QP.o .libs/LLL_RR.o .libs/LLL_XD.o .libs/RR.o .libs/WordVector.o .libs/ZZ.o .libs/ZZVec.o .libs/ZZX.o .libs/ZZX1.o .libs/ZZXCharPoly.o .libs/ZZXFactoring.o .libs/ZZ_p.o .libs/ZZ_pE.o .libs/ZZ_pEX.o .libs/ZZ_pEXFactoring.o .libs/ZZ_pX.o .libs/ZZ_pX1.o .libs/ZZ_pXCharPoly.o .libs/ZZ_pXFactoring.o .libs/fileio.o .libs/lip.o .libs/lzz_p.o .libs/lzz_pE.o .libs/lzz_pEX.o .libs/lzz_pEXFactoring.o .libs/lzz_pX.o .libs/lzz_pX1.o .libs/lzz_pXCharPoly.o .libs/lzz_pXFactoring.o .libs/mat_GF2.o .libs/mat_GF2E.o .libs/mat_RR.o .libs/mat_ZZ.o .libs/mat_ZZ_p.o .libs/mat_ZZ_pE.o .libs/mat_lzz_p.o .libs/mat_lzz_pE.o .libs/mat_poly_ZZ.o .libs/mat_poly_ZZ_p.o .libs/mat_poly_lzz_p.o .libs/quad_float.o .libs/quad_float1.o .libs/tools.o .libs/vec_GF2.o .libs/vec_GF2E.o .libs/vec_RR.o .libs/vec_ZZ.o .libs/vec_ZZ_p.o .libs/vec_ZZ_pE.o .libs/vec_lzz_p.o .libs/vec_lzz_pE.o .libs/xdouble.o .libs/G_LLL_FP.o .libs/G_LLL_QP.o .libs/G_LLL_XD.o .libs/G_LLL_RR.o .libs/thread.o .libs/BasicThreadPool.o .libs/MatPrime.o .libs/pd_FFT.o -lgmp -lgf2x -lpthread -L/usr/lib/gcc/aarch64-linux-musl/10.2.1 -L/usr/lib/gcc/aarch64-linux-musl/10.2.1/../../../../aarch64-linux-musl/lib/../lib64 -L/usr/aarch64-linux-musl/lib/../lib64 -L/usr/aarch64-linux-musl/usr/lib/../lib64 -L/usr/lib/gcc/aarch64-linux-musl/10.2.1/../../../../aarch64-linux-musl/lib -L/usr/aarch64-linux-musl/lib -L/usr/aarch64-linux-musl/usr/lib -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/aarch64-linux-musl/10.2.1/crtendS.o /usr/lib/gcc/aarch64-linux-musl/10.2.1/../../../../aarch64-linux-musl/lib/../lib64/crtn.o -march=armv8-a -O2 -pthread -pthread -Wl,-soname -Wl,libntl.so.44 -o .libs/libntl.so.44.0.1 cc: error: /usr/lib/gcc/aarch64-linux-musl/10.2.1/../../../../aarch64-linux-musl/lib/../lib64/crti.o: No such file or directory cc: error: /usr/lib/gcc/aarch64-linux-musl/10.2.1/../../../../aarch64-linux-musl/lib/../lib64/crtn.o: No such file or directory ``` The closest thing I can do is try the same on x86_64-musl, the corresponding lines in the build are: ``` libtool --tag=CXX --mode=link g++ -I../include -I. -fstack-clash-protection -D_FORTIFY_SOURCE=2 -mtune=generic -O2 -pipe -fdebug-prefix-map=/builddir/ntl-11.5.1=. -pthread -o libntl.la FFT.lo FacVec.lo GF2.lo GF2E.lo GF2EX.lo GF2EXFactoring.lo GF2X.lo GF2X1.lo GF2XFactoring.lo GF2XVec.lo GetTime.lo GetPID.lo HNF.lo ctools.lo LLL.lo LLL_FP.lo LLL_QP.lo LLL_RR.lo LLL_XD.lo RR.lo WordVector.lo ZZ.lo ZZVec.lo ZZX.lo ZZX1.lo ZZXCharPoly.lo ZZXFactoring.lo ZZ_p.lo ZZ_pE.lo ZZ_pEX.lo ZZ_pEXFactoring.lo ZZ_pX.lo ZZ_pX1.lo ZZ_pXCharPoly.lo ZZ_pXFactoring.lo fileio.lo lip.lo lzz_p.lo lzz_pE.lo lzz_pEX.lo lzz_pEXFactoring.lo lzz_pX.lo lzz_pX1.lo lzz_pXCharPoly.lo lzz_pXFactoring.lo mat_GF2.lo mat_GF2E.lo mat_RR.lo mat_ZZ.lo mat_ZZ_p.lo mat_ZZ_pE.lo mat_lzz_p.lo mat_lzz_pE.lo mat_poly_ZZ.lo mat_poly_ZZ_p.lo mat_poly_lzz_p.lo quad_float.lo quad_float1.lo tools.lo vec_GF2.lo vec_GF2E.lo vec_RR.lo vec_ZZ.lo vec_ZZ_p.lo vec_ZZ_pE.lo vec_lzz_p.lo vec_lzz_pE.lo xdouble.lo G_LLL_FP.lo G_LLL_QP.lo G_LLL_XD.lo G_LLL_RR.lo thread.lo BasicThreadPool.lo MatPrime.lo pd_FFT.lo -lgmp -lgf2x -lm -lpthread -rpath /usr/lib -version-info `cat VERSION_INFO` #LSHAR libtool: link: g++ -fPIC -DPIC -shared -nostdlib /usr/lib64/gcc/x86_64-linux-musl/10.2.1/../../../../lib64/crti.o /usr/lib64/gcc/x86_64-linux-musl/10.2.1/crtbeginS.o .libs/FFT.o .libs/FacVec.o .libs/GF2.o .libs/GF2E.o .libs/GF2EX.o .libs/GF2EXFactoring.o .libs/GF2X.o .libs/GF2X1.o .libs/GF2XFactoring.o .libs/GF2XVec.o .libs/GetTime.o .libs/GetPID.o .libs/HNF.o .libs/ctools.o .libs/LLL.o .libs/LLL_FP.o .libs/LLL_QP.o .libs/LLL_RR.o .libs/LLL_XD.o .libs/RR.o .libs/WordVector.o .libs/ZZ.o .libs/ZZVec.o .libs/ZZX.o .libs/ZZX1.o .libs/ZZXCharPoly.o .libs/ZZXFactoring.o .libs/ZZ_p.o .libs/ZZ_pE.o .libs/ZZ_pEX.o .libs/ZZ_pEXFactoring.o .libs/ZZ_pX.o .libs/ZZ_pX1.o .libs/ZZ_pXCharPoly.o .libs/ZZ_pXFactoring.o .libs/fileio.o .libs/lip.o .libs/lzz_p.o .libs/lzz_pE.o .libs/lzz_pEX.o .libs/lzz_pEXFactoring.o .libs/lzz_pX.o .libs/lzz_pX1.o .libs/lzz_pXCharPoly.o .libs/lzz_pXFactoring.o .libs/mat_GF2.o .libs/mat_GF2E.o .libs/mat_RR.o .libs/mat_ZZ.o .libs/mat_ZZ_p.o .libs/mat_ZZ_pE.o .libs/mat_lzz_p.o .libs/mat_lzz_pE.o .libs/mat_poly_ZZ.o .libs/mat_poly_ZZ_p.o .libs/mat_poly_lzz_p.o .libs/quad_float.o .libs/quad_float1.o .libs/tools.o .libs/vec_GF2.o .libs/vec_GF2E.o .libs/vec_RR.o .libs/vec_ZZ.o .libs/vec_ZZ_p.o .libs/vec_ZZ_pE.o .libs/vec_lzz_p.o .libs/vec_lzz_pE.o .libs/xdouble.o .libs/G_LLL_FP.o .libs/G_LLL_QP.o .libs/G_LLL_XD.o .libs/G_LLL_RR.o .libs/thread.o .libs/BasicThreadPool.o .libs/MatPrime.o .libs/pd_FFT.o -lgmp -lgf2x -lpthread -L/usr/lib64/gcc/x86_64-linux-musl/10.2.1 -L/usr/lib64/gcc/x86_64-linux-musl/10.2.1/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib64/gcc/x86_64-linux-musl/10.2.1/../../.. -lstdc++ -lm -lssp_nonshared -lc -lgcc_s /usr/lib64/gcc/x86_64-linux-musl/10.2.1/crtendS.o /usr/lib64/gcc/x86_64-linux-musl/10.2.1/../../../../lib64/crtn.o -mtune=generic -O2 -pthread -pthread -Wl,-soname -Wl,libntl.so.44 -o .libs/libntl.so.44.0.1 ``` I don't see any difference (or anything wrong) in the invocation of libtool (first line). But note the difference in the invocation of `cc` to link by libtool (second line): - aarch64-musl uses `/usr/lib/gcc/aarch64-linux-musl/10.2.1/../../../../aarch64-linux-musl/lib/../lib64/crti.o` - x86_64-musl uses `/usr/lib64/gcc/x86_64-linux-musl/10.2.1/../../../../lib64/crti.o` The former expands to `/usr/aarch64-linux-musl/lib64/crti.o` (incorrect) while the latter expands to `/usr/lib64/crti.o` (correct). What is going on? Unfortunately I don't have access (yet) to native aarch64. I've got a rpi4 to run void, but I didn't have time to install it yet -- eventually I hope to be able to test `sagemath` and all dependencies (`sagemath` is currrently blocked from aarch64 due to a few nocross packages, `ntl` being one of them, but even if it were possible to cross-build it would be important to run the full doctest suite).