sleef: Build fails on Termux / aarch64
Hi, thank you for this library!
I was looking to see if I could use this library for a project, and wanted to check the performance differences on an aarch64 android device I own. For this, I’m using Termux, and encountered the following errors on make. I think it’s related to linking libm, but not sure where exactly the fix goes, or if there is a non-trivial amount of work required to make this work on Termux; will let you know if I find the fix.
See terminal output of `make`.
[ 2%] Built target mkrename_gnuabi
[ 3%] Built target sleefgnuabiadvsimddp
[ 4%] Built target sleefgnuabiadvsimdsp
[ 5%] Built target sleefgnuabi
[ 6%] Built target addSuffix
[ 7%] Built target mkrename
[ 8%] Built target renamedspscalar.h_generated
[ 9%] Built target mkdisp
[ 10%] Built target dispscalar.c_generated
[ 14%] Built target headers
[ 15%] Built target dispscalar_obj
[ 16%] Built target renamePURECFMA_SCALAR.h_generated
[ 18%] Built target sleefdetpurecfma_scalar
[ 20%] Built target sleefpurecfma_scalar
[ 22%] Built target sleefscalar
[ 22%] Built target renamePUREC_SCALAR.h_generated
[ 23%] Built target sleefdetpurec_scalar
[ 25%] Built target sleefpurec_scalar
[ 26%] Built target renameADVSIMDNOFMA.h_generated
[ 27%] Built target sleefadvsimdnofma
[ 28%] Built target mkalias
[ 28%] Built target alias_advsimd.h_generated
[ 28%] Built target renameADVSIMD.h_generated
[ 30%] Built target sleefadvsimd
[ 30%] Built target common
[ 32%] Built target sleefdetadvsimdnofma
[ 34%] Built target sleefdetadvsimd
[ 35%] Built target sleef
[ 36%] Built target mkmasked_gnuabi
[ 37%] Linking C executable ../../bin/tester
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: CMakeFiles/tester.dir/tester.c.o: in function `do_test':
/data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2335: undefined reference to `nextafter'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2335: undefined reference to `nextafter'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2343: undefined reference to `nextafter'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2343: undefined reference to `nextafter'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2351: undefined reference to `nextafter'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: CMakeFiles/tester.dir/tester.c.o:/data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2351: more undefined references to `nextafter' follow
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: CMakeFiles/tester.dir/tester.c.o: in function `do_test':
/data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2585: undefined reference to `ilogb'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2586: undefined reference to `ilogb'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2612: undefined reference to `nextafter'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2931: undefined reference to `nextafterf'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2931: undefined reference to `nextafterf'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2935: undefined reference to `nextafterf'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2935: undefined reference to `nextafterf'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2944: undefined reference to `nextafterf'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: CMakeFiles/tester.dir/tester.c.o:/data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:2944: more undefined references to `nextafterf' follow
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: CMakeFiles/tester.dir/tester.c.o: in function `do_test':
/data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:(.text+0x36e40): undefined reference to `pow'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:3663: undefined reference to `pow'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:(.text+0x36f08): undefined reference to `pow'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:3663: undefined reference to `pow'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:3663: undefined reference to `pow'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: CMakeFiles/tester.dir/tester.c.o:/data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:(.text+0x37624): more undefined references to `pow' follow
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: CMakeFiles/tester.dir/tester.c.o: in function `do_test':
/data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:4177: undefined reference to `ilogb'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:4179: undefined reference to `ilogb'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:4187: undefined reference to `ilogb'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:4189: undefined reference to `ilogb'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:(.text+0x48b9c): undefined reference to `pow'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:4199: undefined reference to `ilogb'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:4201: undefined reference to `ilogb'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:(.text+0x48d08): undefined reference to `pow'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:4211: undefined reference to `ilogb'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:4213: undefined reference to `ilogb'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:(.text+0x4e304): undefined reference to `pow'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:4462: undefined reference to `pow'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:(.text+0x4e3d0): undefined reference to `pow'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:4462: undefined reference to `pow'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:4462: undefined reference to `pow'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: CMakeFiles/tester.dir/tester.c.o:/data/data/com.termux/files/home/sleef/src/libm-tester/tester.c:(.text+0x4eb04): more undefined references to `pow' follow
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: CMakeFiles/tester.dir/testerutil.c.o: in function `countULPdp':
/data/data/com.termux/files/home/sleef/src/libm-tester/testerutil.c:175: undefined reference to `frexp'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/testerutil.c:176: undefined reference to `ldexpl'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/testerutil.c:176: undefined reference to `fmaxl'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: CMakeFiles/tester.dir/testerutil.c.o: in function `countULP2dp':
/data/data/com.termux/files/home/sleef/src/libm-tester/testerutil.c:223: undefined reference to `frexp'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/testerutil.c:224: undefined reference to `ldexpl'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: /data/data/com.termux/files/home/sleef/src/libm-tester/testerutil.c:224: undefined reference to `fmaxl'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: CMakeFiles/tester.dir/testerutil.c.o: in function `countULPsp':
/data/data/com.termux/files/home/sleef/src/libm-tester/testerutil.c:256: undefined reference to `frexp'
/data/data/com.termux/files/usr/bin/aarch64-linux-android-ld: CMakeFiles/tester.dir/testerutil.c.o: in function `countULP2sp':
/data/data/com.termux/files/home/sleef/src/libm-tester/testerutil.c:283: undefined reference to `frexp'
clang-9: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [src/libm-tester/CMakeFiles/tester.dir/build.make:122: bin/tester] Error 1
make[1]: *** [CMakeFiles/Makefile2:1073: src/libm-tester/CMakeFiles/tester.dir/all] Error 2
make: *** [Makefile:161: all] Error 2
\```
</details>
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Comments: 17 (9 by maintainers)
I don’t have a computer that runs Android.
sin scalar : 0.366 sin sleef : 0.175 sinh scalar : 0.367 sinh sleef : 0.116
on ODROID-N2
Hello,
Please check if specifying
-DBUILD_TESTS=FALSEas a cmake option works.