Situation 1: no autoreconf, libc static

Config:

../configure --prefix=/data/data/com.termux/files/usr LDFLAGS=/data/data/com.termux/files/usr/lib/clang/16/lib/linux/libclang_rt.builtins-aarch64-android.a 'CPPFLAGS=-O0 -g -U __ANDROID_API__ -D __ANDROID_API__=33 --target=aarch64-linux-android33

Error on usage:

1
2
3
octave: no graphical display found
octave: disabling GUI features
CANNOT LINK EXECUTABLE "/data/data/com.termux/files/home/src/octave-8.3.0/.build/src/.libs/octave-cli": cannot locate symbol "_ZN6octave3sys8password8getpwuidEjRNSt6__ndk112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEE" referenced by "/data/data/com.termux/files/home/src/octave-8.3.0/.build/libinterp/.libs/liboctinterp.so.11.0.1"...

Situation 2: no autoreconf, libc static, getpwnam define

This situation is stupid :)

Config:

../configure --prefix=/data/data/com.termux/files/usr LDFLAGS=/data/data/com.termux/files/usr/lib/clang/16/lib/linux/libclang_rt.builtins-aarch64-android.a 'CPPFLAGS=-O0 -g -U __ANDROID_API__ -D __ANDROID_API__=33 --target=aarch64-linux-android33 -Dgetpwnam=android_polyfill_getpwnam

Make error:

CC       libgnu_la-getdtablesize.lo                             CC       libgnu_la-getprogname.lo
  CC       malloc/libgnu_la-scratch_buffer_grow.lo                CC       malloc/libgnu_la-scratch_buffer_grow_preserve.lo
  CC       malloc/libgnu_la-scratch_buffer_set_array_size.lo      CC       libgnu_la-glob.lo
In file included from ../../libgnu/glob.c:44:                   /data/data/com.termux/files/usr/include/pwd.h:121:23: error: static declaration of 'android_polyfill_getpwnam' follows non-static declaration                                                   static struct passwd* android_polyfill_getpwnam(const char* name) {
                      ^                                         /data/data/com.termux/files/usr/include/pwd.h:83:16: note: previous declaration is here                                         struct passwd* getpwnam(const char* __name);                                   ^                                                <command line>:4:18: note: expanded from macro 'getpwnam'
#define getpwnam android_polyfill_getpwnam                                       ^
1 error generated.                                              make[3]: *** [Makefile:4238: libgnu_la-glob.lo] Error 1
make[3]: Leaving directory '/data/data/com.termux/files/home/src/octave-8.3.0/.build/libgnu'
make[2]: *** [Makefile:5545: all-recursive] Error 1             make[2]: Leaving directory '/data/data/com.termux/files/home/src/octave-8.3.0/.build/libgnu'                                    make[1]: *** [Makefile:3250: all] Error 2
make[1]: Leaving directory '/data/data/com.termux/files/home/src/octave-8.3.0/.build/libgnu'
make: *** [Makefile:30804: libgnu/libgnu.la] Error 2

Situation 3: autoreconfed

Config:

../configure --prefix=/data/data/com.termux/files/usr 'CPPFLAGS=-O0 -g -U __ANDROID_API__ -D __ANDROID_API__=33 --target=aarch64-linux-android33'

Make error:

CXXLD    src/octave-cli
ld.lld: error: undefined reference due to --no-allow-shlib-undefined: octave::sys::password::getpwuid(unsigned int, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>>&)
>>> referenced by libinterp/.libs/liboctinterp.so

ld.lld: error: undefined reference due to --no-allow-shlib-undefined: octave::sys::password::getpwnam(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>>&)
>>> referenced by libinterp/.libs/liboctinterp.so

ld.lld: error: undefined reference due to --no-allow-shlib-undefined: octave::sys::password::getpwnam(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&)
>>> referenced by /data/data/com.termux/files/home/src/octave-8.3.0/.build/liboctave/.libs/liboctave.so

ld.lld: error: undefined reference due to --no-allow-shlib-undefined: octave::sys::password::getpwuid(unsigned int)
>>> referenced by /data/data/com.termux/files/home/src/octave-8.3.0/.build/liboctave/.libs/liboctave.so
clang-16: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [Makefile:15739: src/octave-cli] Error 1
make[2]: Leaving directory '/data/data/com.termux/files/home/src/octave-8.3.0/.build'
make[1]: *** [Makefile:27671: all-recursive] Error 1
make[1]: Leaving directory '/data/data/com.termux/files/home/src/octave-8.3.0/.build'
make: *** [Makefile:11061: all] Error 2

Situation 4: autoreconfed, getpwnam define

Config:

../configure --prefix=/data/data/com.termux/files/usr 'CPPFLAGS=-O0 -g -U __ANDROID_API__ -D __ANDROID_API__=33 --target=aarch64-linux-android33 -Dgetpwnam=android_polyfill_getpwnam'

Make error:

In file included from ../../libgnu/glob.c:44:
/data/data/com.termux/files/usr/include/pwd.h:121:23: error: static declaration of 'android_polyfill_getpwnam' follows non-static declaration
static struct passwd* android_polyfill_getpwnam(const char* name) {
                      ^
/data/data/com.termux/files/usr/include/pwd.h:83:16: note: previous declaration is here
struct passwd* getpwnam(const char* __name);
               ^
<command line>:4:18: note: expanded from macro 'getpwnam'
#define getpwnam android_polyfill_getpwnam
                 ^
1 error generated.
make[3]: *** [Makefile:4238: libgnu_la-glob.lo] Error 1
make[3]: Leaving directory '/data/data/com.termux/files/home/src/octave-8.3.0/.build/libgnu'
make[2]: *** [Makefile:5545: all-recursive] Error 1
make[2]: Leaving directory '/data/data/com.termux/files/home/src/octave-8.3.0/.build/libgnu'
make[1]: *** [Makefile:3250: all] Error 2
make[1]: Leaving directory '/data/data/com.termux/files/home/src/octave-8.3.0/.build/libgnu'
make: *** [Makefile:30804: libgnu/libgnu.la] Error 2
Edit Report
Pub: 04 Oct 2023 09:13 UTC
Views: 111