Is there any update on this? I understand not wanting to provide libraries for arbitrary platforms. However, I think it is reasonable to provide the Linux aarch64 shared library for the stated supported Ubuntu 16.04 and newer.
I am trying to use LimeLM 4.4.4 with a project deployed on a Nvidia Jetson. Specifically, I am targeting the Nvidia Jetson Xavier NX which is an ARMv8.2.
I have created a simple test application using the code provided in https://wyday.com/limelm/help/using-turboactivate-with-c-plus-plus/
If use compile this application on macos or Linux x64, it compiles and runs as expected. The Nvidia Jetson runs Jetson Linux https://developer.nvidia.com/embedded/jetson-linux-r341, a NVidia OS based on Ubuntu 18.04 (glibc 2.28). The provided compiler is gcc 7.5.
I am unable to link to libTurboActivate using either the shared or static libraries.
Shared armv8-a
gcc source.c -march=armv8-a -Ishared/API/C -Lshared/bin-linux/armv8-a/ -l TurboActivate -olimelm-shared-armv8-a
/usr/bin/ld: skipping incompatible shared/bin-linux/armv8-a//libTurboActivate.so when searching for -lTurboActivate
The armv8-a library is not detected as the right architecture
Shared aarch64
gcc source.c -march=armv8-a -Ishared/API/C -Lshared/bin-linux/aarch64/ -l TurboActivate -olimelm-shared-aarch64
shared/bin-linux/aarch64//libTurboActivate.so: undefined reference to `fcntl64@GLIBC_2.28'
shared/bin-linux/aarch64//libTurboActivate.so: undefined reference to `std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::basic_stringstream()'
collect2: error: ld returned 1 exit status
It is interesting that it is not finding references to GLIB_2.28.
ldd -v shared/bin-linux/aarch64/libTurboActivate.so
shared/bin-linux/aarch64/libTurboActivate.so: /lib/aarch64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by shared/bin-linux/aarch64/libTurboActivate.so)
libTurboActivate is https://wyday.com/limelm/help/using-turboactivate-on-linux/ documented to support versions as old as Ubuntu 16.04 (GLIB_2.23). It seems the aarch64 library is targeting something newer.
Static aarch64
gcc source.c -march=armv8-a -Istatic/API/C -Lstatic/bin-linux/aarch64/ -l TurboActivate -olimelm-static-aarch64
lto1: fatal error: bytecode stream in file ‘static/bin-linux/aarch64//libTurboActivate.a’ generated with LTO version 8.1 instead of the expected 6.2
Is there any way to get a library compiled for the Nvidia Jetson? If needed, I can provided a working toolchain in a docker container.
Is there any update on this? I understand not wanting to provide libraries for arbitrary platforms. However, I think it is reasonable to provide the Linux aarch64 shared library for the stated supported Ubuntu 16.04 and newer.
Yes, for ARM platforms we use newer compiler toolchains. We do this for a variety of reasons. Because they're newer they use newer glibc dependencies.
Update the OS to a newer version. This is documented multiple places. Here's an example.
Is there any way to get a version compiled for an older glibc (2.27)? Our software is installed on our customers computer and thus we do not have control over the installed OS.
Not in the short term. And, 18.04 is end-of-life in 11 months anyway. It's a good time to update.
20.04 is out (and supported).
22.04 is out (and supported).