I am trying to compile for android with ndk and I have a trouble understanding how to go about cross-compiling it.

Jakub Strzelecki jakubby at protonmail.com
Wed Jun 30 22:19:25 UTC 2021


Below is how I go about the compilation, it is a 3 stage process;
I use git to keep track of those simple build scripts;
source set_shell && ./generate_answers.sh && ./build_libtalloc.sh
Here's how it looks like:#####################################################
$ cat set_shell.sh
#!/usr/bin/env bash
export PROJECT_TARGET="$(basename $(pwd))"
export PROJECT_ROOT=$(dirname $(pwd))

if [[ "$PROJECT_TARGET" = "arm" ]]; then
export ANDROID_TOOLCHAIN="-androideabi"
else
export ANDROID_TOOLCHAIN="-android"
fi
export ANDROID_PREFIX="$ANDROID_TOOLCHAIN"

export PROJECT_ROOT=$(pwd)
export DEVKIT_ROOT="$PROJECT_ROOT/NDK"
export DEVKIT_TOOLCHAIN="$DEVKIT_ROOT/$PROJECT_TARGET-linux$ANDROID_TOOLCHAIN/bin"
export DEVKIT_SYSROOT="$DEVKIT_ROOT/sysroot"

export PATH="$DEVKIT_ROOT/bin:$PATH"

export _PREFIX="build_android-$PROJECT_TARGET"
export _PREFIX_UNKNOWN="$PROJECT_TARGET-unknown-linux$ANDROID_PREFIX"
export _HOST_TARGET="$PROJECT_TARGET-linux$ANDROID_PREFIX"

export CROSS_COMPILE="$DEVKIT_TOOLCHAIN/$PROJECT_TARGET-linux$ANDROID_PREFIX-"
export CROSS_COMPILE_="$DEVKIT_TOOLCHAIN/$PROJECT_TARGET-linux$ANDROID_PREFIX"

#TALLOC
export TALLOC_DIR="samba.org/ftp/talloc"
export TALLOC_VER="$(ls $TALLOC_DIR)"
export TALLOC_DIR="$TALLOC_DIR/$TALLOC_VER"
unset TALLOC_VER
export TALLOC_PREFIX="$PROJECT_TARGET"
export TALLOC_LIB="$TALLOC_PREFIX/lib"
export TALLOC_INCLUDE="$TALLOC_PREFIX/include"

#PROOT
export PROOT_DIR="proot-me/proot"
export PROOT_VER="$(ls $PROOT_DIR)"
export PROOT_DIR="$PROOT_DIR/$PROOT_VER/src"
unset PROOT_VER
export PROOT_PREFIX="$PROJECT_TARGET"
export PROOT_CFLAGS="-I$TALLOC_INCLUDE"
export PROOT_CPPFLAGS="-I$TALLOC_INCLUDE"
export PROOT_LDFLAGS="-L$TALLOC_LIB"
$ cat generate_answers.sh
#!/usr/bin/env bash
cat <<EOF >answers_$PROJECT_TARGET.txt
Checking for 'gcc' (C compiler) : $CROSS_COMPILE_-gcc
Checking for program 'gdb' : $CROSS_COMPILE_-gdb
Checking uname sysname type: "Linux"
Checking uname machine type: "$PROJECT_TARGET"
Checking uname release type: "dontcare"
Checking uname version type: "dontcare"
Checking simple C program: OK
building library support: OK
Checking for large file support: OK
Checking for -D_FILE_OFFSET_BITS=64: $FILE_OFFSET_BITS
Checking for WORDS_BIGENDIAN: OK
Checking for C99 vsnprintf: OK
Checking for HAVE_SECURE_MKSTEMP: OK
rpath library support: OK
-Wl,--version-script support: FAIL
Checking correct behavior of strtoll: OK
Checking correct behavior of strptime: OK
Checking for HAVE_IFACE_GETIFADDRS: OK
Checking for HAVE_IFACE_IFCONF: OK
Checking for HAVE_IFACE_IFREQ: OK
Checking getconf LFS_CFLAGS: OK
Checking for large file support without additional flags: OK
Checking for working strptime: OK
Checking for HAVE_SHARED_MMAP: OK
Checking for HAVE_MREMAP: OK
Checking for HAVE_INCOHERENT_MMAP: OK
Checking getconf large file support flags work: OK
EOF$ cat build_libtalloc.sh
#!/usr/bin/env bash
cd $TALLOC_DIR
bash configure \
--prefix=$TALLOC_PREFIX \
--cross-compile \
--disable-rpath \
--disable-python \
--cross-answers=$PROJECT_ROOT/answers_$PROJECT_TARGET.txt
make -j6
PREFIX=$TALLOC_PREFIX make install PREFIX=$TALLOC_PREFIX$ cat answers_aarch64.txt
Checking for 'gcc' (C compiler) : /home/kubast2/Desktop/proot/aarch64/NDK/aarch64-linux-android/bin/aarch64-linux-a
ndroid-gcc
Checking for program 'gdb' : /home/kubast2/Desktop/proot/aarch64/NDK/aarch64-linux-android/bin/aarch64-linux-androi
d-gdb
Checking uname sysname type: "Linux"
Checking uname machine type: "aarch64"
Checking uname release type: "dontcare"
Checking uname version type: "dontcare"
Checking simple C program: OK
building library support: OK
Checking for large file support: OK
Checking for -D_FILE_OFFSET_BITS=64:
Checking for WORDS_BIGENDIAN: OK
Checking for C99 vsnprintf: OK
Checking for HAVE_SECURE_MKSTEMP: OK
rpath library support: OK
-Wl,--version-script support: FAIL
Checking correct behavior of strtoll: OK
Checking correct behavior of strptime: OK
Checking for HAVE_IFACE_GETIFADDRS: OK
Checking for HAVE_IFACE_IFCONF: OK
Checking for HAVE_IFACE_IFREQ: OK
Checking getconf LFS_CFLAGS: OK
Checking for large file support without additional flags: OK
Checking for working strptime: OK
Checking for HAVE_SHARED_MMAP: OK
Checking for HAVE_MREMAP: OK
Checking for HAVE_INCOHERENT_MMAP: OK
Checking getconf large file support flags work: OK
#####################################################

Below is what ./build_project.sh(which just makes does the equivalent of "source set_shell; bash ./generate_answers.sh; bash ./build_libtalloc.sh") outputs:#####################################################
$ ./build_project.sh
Setting top to : /home/kubast2/Desktop/proot/aarch64/samba.org/ftp/talloc/2.3.2
Setting out to : /home/kubast2/Desktop/proot/aarch64/samba.org/ftp/talloc/2.3.2/bin
Checking for 'gcc' (C compiler) : /usr/bin/gcc
Checking for program 'git' : /usr/bin/git
Checking for c flags '-MMD' : yes
Checking for program 'gdb' : /usr/bin/gdb
Checking for header sys/utsname.h : yes
Checking uname sysname type : Linux
Checking uname machine type : aarch64
Checking uname release type : dontcare
Checking uname version type : dontcare
Checking for header stdio.h : yes
Checking simple C program : ok
Checking compiler accepts ['-Werror'] : yes
Checking linker accepts ['-Wl,-rpath,.'] : yes
Checking for rpath library support : yes
Checking for -Wl,--version-script support : not found
Checking compiler accepts ['-fvisibility=hidden'] : yes
Checking for HAVE_VISIBILITY_ATTR : ok
Checking for library constructor support : ok
Checking for library destructor support : ok
Checking for __attribute__ : ok
Checking compiler accepts ['-fPIC'] : yes
Checking for inline : inline
Checking for program 'pkg-config' : /usr/bin/pkg-config
Checking for pkg-config version >= '0.0.0' : yes
Checking compiler accepts ['-D__STDC_WANT_LIB_EXT1__=1'] : yes
Checking compiler accepts [''] : yes
Checking for header sys/types.h : yes
Checking for header sys/stat.h : yes
Checking for header stdlib.h : yes
Checking for header stddef.h : yes
Checking for header memory.h : yes
Checking for header string.h : yes
Checking for header strings.h : yes
Checking for header inttypes.h : yes
Checking for header stdint.h : yes
Checking for header unistd.h : yes
Checking for header minix/config.h : no
Checking for header ctype.h : yes
Checking for header standards.h : no
Checking for header stdbool.h : yes
Checking for header stdarg.h : yes
Checking for header vararg.h : no
Checking for header limits.h : yes
Checking for header assert.h : yes
Checking getconf LFS_CFLAGS : not found
Checking getconf large file support flags work : ok
Checking for large file support without additional flags : ok
Checking for header sys/time.h : yes
Checking for header time.h : yes
Checking for header endian.h : yes
Checking for header sys/endian.h : no
Checking for HAVE_LITTLE_ENDIAN : ok
Checking for HAVE_BIG_ENDIAN : not found
Checking for header signal.h : yes
Checking if signal handlers return int : not found
Checking for variable __FUNCTION__ : ok
Checking for va_copy : ok
Checking for HAVE__VA_ARGS__MACRO : ok
Checking for header linux/types.h : yes
Checking for header crypt.h : yes
Checking for header locale.h : yes
Checking for header acl/libacl.h : yes
Checking for header compat.h : no
Checking for header attr/xattr.h : no
Checking for header dustat.h : no
Checking for header fcntl.h : yes
Checking for header fnmatch.h : yes
Checking for header glob.h : yes
Checking for header history.h : no
Checking for header krb5.h : yes
Checking for header langinfo.h : yes
Checking for header ndir.h : no
Checking for header pwd.h : yes
Checking for header shadow.h : yes
Checking for header sys/acl.h : yes
Checking for header sys/attributes.h : no
Checking for header attr/attributes.h : yes
Checking for header sys/capability.h : yes
Checking for header sys/dir.h : yes
Checking for header sys/epoll.h : yes
Checking for header port.h : no
Checking for header sys/fcntl.h : yes
Checking for header sys/filio.h : no
Checking for header sys/filsys.h : no
Checking for header sys/fs/s5param.h : no
Checking for header sys/id.h : no
Checking for header sys/ioctl.h : yes
Checking for header sys/ipc.h : yes
Checking for header sys/mman.h : yes
Checking for header sys/mode.h : no
Checking for header sys/ndir.h : no
Checking for header sys/priv.h : no
Checking for header sys/resource.h : yes
Checking for header sys/security.h : no
Checking for header sys/shm.h : yes
Checking for header sys/statfs.h : yes
Checking for header sys/statvfs.h : yes
Checking for header sys/termio.h : no
Checking for header sys/vfs.h : yes
Checking for header sys/xattr.h : yes
Checking for header termio.h : yes
Checking for header termios.h : yes
Checking for header sys/file.h : yes
Checking for header sys/ucontext.h : yes
Checking for header sys/wait.h : yes
Checking for declaration of malloc : ok
Checking for header grp.h : yes
Checking for header sys/select.h : yes
Checking for header setjmp.h : yes
Checking for header utime.h : yes
Checking for header sys/syslog.h : yes
Checking for header syslog.h : yes
Checking for header sys/mount.h : yes
Checking for header mntent.h : yes
Checking for header stropts.h : no
Checking for header unix.h : no
Checking for header sys/param.h : yes
Checking for header sys/socket.h : yes
Checking for header netinet/in.h : yes
Checking for header netdb.h : yes
Checking for header arpa/inet.h : yes
Checking for header netinet/in_systm.h : yes
Checking for header netinet/ip.h : yes
Checking for header netinet/tcp.h : yes
Checking for header netinet/in_ip.h : no
Checking for header sys/sockio.h : no
Checking for header sys/un.h : yes
Checking for header sys/uio.h : yes
Checking for header ifaddrs.h : yes
Checking for header direct.h : no
Checking for header dirent.h : yes
Checking for header windows.h : no
Checking for header winsock2.h : no
Checking for header ws2tcpip.h : no
Checking for header errno.h : yes
Checking for header getopt.h : yes
Checking for header iconv.h : yes
Checking for header nss.h : yes
Checking for header sasl/sasl.h : yes
Checking for inotify_init : ok
Checking for header security/pam_appl.h : yes
Checking for header zlib.h : yes
Checking for header asm/unistd.h : yes
Checking for header sys/unistd.h : yes
Checking for header alloca.h : yes
Checking for header float.h : yes
Checking for header rpc/rpc.h : no
Checking for header rpc/nettype.h : no
Checking for tirpc rpc headers in default system path : not found
Checking for libtirpc headers : yes
Checking for header rpc/rpc.h : yes
Checking for header rpc/nettype.h : yes
Checking for library nsl : yes
Checking for header rpcsvc/yp_prot.h : yes
Checking for header rpcsvc/nis.h : yes
Checking for header rpcsvc/ypclnt.h : yes
Checking for header sys/sysctl.h : not found
Checking for header sys/fileio.h : no
Checking for header sys/filesys.h : no
Checking for header sys/dustat.h : no
Checking for header sys/sysmacros.h : yes
Checking for header xfs/libxfs.h : no
Checking for header netgroup.h : no
Checking for header valgrind.h : no
Checking for header valgrind/valgrind.h : yes
Checking for header valgrind/memcheck.h : yes
Checking for header valgrind/helgrind.h : yes
Checking for header nss_common.h : no
Checking for header nsswitch.h : no
Checking for header ns_api.h : no
Checking for header sys/extattr.h : no
Checking for header sys/ea.h : no
Checking for header sys/proplist.h : no
Checking for header sys/cdefs.h : yes
Checking for header utmp.h : yes
Checking for header utmpx.h : yes
Checking for header lastlog.h : yes
Checking for header syscall.h : yes
Checking for header sys/syscall.h : yes
Checking for header sys/atomic.h : no
Checking for header stdatomic.h : yes
Checking for header libgen.h : yes
Checking compiler accepts -Wno-format-truncation : yes
Checking compiler accepts -Wno-unused-function : yes
Checking compiler accepts -Wno-strict-overflow : yes
Checking for header sys/prctl.h : yes
Checking for prctl syscall : ok
Checking for O_DIRECT flag to open(2) : ok
Checking for long long : ok
Checking for intptr_t : ok
Checking for uintptr_t : ok
Checking for ptrdiff_t : ok
Checking for comparison_fn_t : ok
Checking for _Bool : ok
Checking for bool : ok
Checking for int8_t : ok
Checking for uint8_t : ok
Checking for int16_t : ok
Checking for uint16_t : ok
Checking for int32_t : ok
Checking for uint32_t : ok
Checking for int64_t : ok
Checking for uint64_t : ok
Checking for size_t : ok
Checking for ssize_t : ok
Checking for ino_t : ok
Checking for loff_t : ok
Checking for offset_t : not found
Checking for volatile int : ok
Checking for uint_t : not found
Checking for blksize_t : ok
Checking for blkcnt_t : ok
Checking if size of bool == 1 : ok
Checking if size of char == 1 : ok
Checking if size of int == 1 : not found
Checking if size of int == 2 : not found
Checking if size of int == 4 : ok
Checking if size of long long == 1 : not found
Checking if size of long long == 2 : not found
Checking if size of long long == 4 : not found
Checking if size of long long == 8 : ok
Checking if size of long == 1 : not found
Checking if size of long == 2 : not found
Checking if size of long == 4 : not found
Checking if size of long == 8 : ok
Checking if size of short == 1 : not found
Checking if size of short == 2 : ok
Checking if size of size_t == 1 : not found
Checking if size of size_t == 2 : not found
Checking if size of size_t == 4 : not found
Checking if size of size_t == 8 : ok
Checking if size of ssize_t == 1 : not found
Checking if size of ssize_t == 2 : not found
Checking if size of ssize_t == 4 : not found
Checking if size of ssize_t == 8 : ok
Checking if size of int8_t == 1 : ok
Checking if size of uint8_t == 1 : ok
Checking if size of int16_t == 1 : not found
Checking if size of int16_t == 2 : ok
Checking if size of uint16_t == 1 : not found
Checking if size of uint16_t == 2 : ok
Checking if size of int32_t == 1 : not found
Checking if size of int32_t == 2 : not found
Checking if size of int32_t == 4 : ok
Checking if size of uint32_t == 1 : not found
Checking if size of uint32_t == 2 : not found
Checking if size of uint32_t == 4 : ok
Checking if size of int64_t == 1 : not found
Checking if size of int64_t == 2 : not found
Checking if size of int64_t == 4 : not found
Checking if size of int64_t == 8 : ok
Checking if size of uint64_t == 1 : not found
Checking if size of uint64_t == 2 : not found
Checking if size of uint64_t == 4 : not found
Checking if size of uint64_t == 8 : ok
Checking if size of void* == 1 : not found
Checking if size of void* == 2 : not found
Checking if size of void* == 4 : not found
Checking if size of void* == 8 : ok
Checking if size of off_t == 1 : not found
Checking if size of off_t == 2 : not found
Checking if size of off_t == 4 : not found
Checking if size of off_t == 8 : ok
Checking if size of dev_t == 1 : not found
Checking if size of dev_t == 2 : not found
Checking if size of dev_t == 4 : not found
Checking if size of dev_t == 8 : ok
Checking if size of ino_t == 1 : not found
Checking if size of ino_t == 2 : not found
Checking if size of ino_t == 4 : not found
Checking if size of ino_t == 8 : ok
Checking if size of time_t == 1 : not found
Checking if size of time_t == 2 : not found
Checking if size of time_t == 4 : not found
Checking if size of time_t == 8 : ok
Checking for socklen_t : ok
Checking for struct ifaddrs : ok
Checking for struct addrinfo : ok
Checking for struct sockaddr : ok
Checking for HAVE_STRUCT_SOCKADDR_IN6 : ok
Checking for struct sockaddr_storage : ok
Checking for sa_family_t : ok
Checking for sig_atomic_t : ok
Checking for sigsetmask : ok
Checking for siggetmask : ok
Checking for sigprocmask : ok
Checking for sigblock : ok
Checking for sigaction : ok
Checking for sigset : ok
Checking for inet_ntoa : ok
Checking for inet_aton : ok
Checking for inet_ntop : ok
Checking for inet_pton : ok
Checking for connect : ok
Checking for gethostbyname : ok
Checking for getaddrinfo : ok
Checking for getnameinfo : ok
Checking for freeaddrinfo : ok
Checking for gai_strerror : ok
Checking for socketpair : ok
Checking for memset_s : not found
Checking for memset_explicit : not found
Checking for volatile memory protection : ok
Checking for variable IPV6_V6ONLY : ok
Checking for header net/if.h : yes
Checking for HAVE_IPV6 : ok
Checking whether we have ucontext_t : ok
Checking for __sync_fetch_and_add compiler builtin : ok
Checking for atomic_add_32 compiler builtin : not found
Checking for atomic_thread_fence(memory_order_seq_cst) in stdatomic.h : ok
Checking for fallthrough attribute : ok
Checking for strdup : ok
Checking for memmem : ok
Checking for printf : ok
Checking for memset : ok
Checking for memcpy : ok
Checking for memmove : ok
Checking for strcpy : ok
Checking for strncpy : ok
Checking for bzero : ok
Checking for shl_load : not found
Checking for shl_unload : not found
Checking for shl_findsym : not found
Checking for pipe : ok
Checking for strftime : ok
Checking for srandom : ok
Checking for random : ok
Checking for srand : ok
Checking for rand : ok
Checking for usleep : ok
Checking for setbuffer : ok
Checking for lstat : ok
Checking for getpgrp : ok
Checking for utime : ok
Checking for utimes : ok
Checking for setuid : ok
Checking for seteuid : ok
Checking for setreuid : ok
Checking for setresuid : ok
Checking for setgid : ok
Checking for setegid : ok
Checking for setregid : ok
Checking for setresgid : ok
Checking for chroot : ok
Checking for strerror : ok
Checking for vsyslog : ok
Checking for setlinebuf : ok
Checking for mktime : ok
Checking for ftruncate : ok
Checking for chsize : not found
Checking for rename : ok
Checking for waitpid : ok
Checking for wait4 : ok
Checking for initgroups : ok
Checking for pread : ok
Checking for pwrite : ok
Checking for strndup : ok
Checking for strcasestr : ok
Checking for strsep : ok
Checking for strtok_r : ok
Checking for mkdtemp : ok
Checking for dup2 : ok
Checking for dprintf : ok
Checking for vdprintf : ok
Checking for isatty : ok
Checking for chown : ok
Checking for lchown : ok
Checking for link : ok
Checking for readlink : ok
Checking for symlink : ok
Checking for realpath : ok
Checking for snprintf : ok
Checking for vsnprintf : ok
Checking for asprintf : ok
Checking for vasprintf : ok
Checking for setenv : ok
Checking for unsetenv : ok
Checking for strnlen : ok
Checking for strtoull : ok
Checking for __strtoull : not found
Checking for strtouq : ok
Checking for strtoll : ok
Checking for __strtoll : not found
Checking for strtoq : ok
Checking for memalign : ok
Checking for posix_memalign : ok
Checking for fmemopen : ok
Checking for header malloc.h : yes
Checking for declaration of memalign : ok
Checking for posix_fallocate-capable libc : ok
Checking for posix_fallocate : ok
Checking for prctl : ok
Checking for dirname : ok
Checking for basename : ok
Checking for strlcpy : not found
Checking for strlcat : not found
Checking for strlcpy : not found
Checking for strlcat : not found
Checking for library bsd : yes
Checking for strlcpy in bsd : ok
Checking for strlcat in bsd : ok
Checking for getpeereid : not found
Checking for getpeereid in bsd : ok
Checking for library setproctitle : no
Checking for setproctitle : not found
Checking for setproctitle in bsd : ok
Checking for setproctitle_init : not found
Checking for setproctitle_init in bsd : ok
Checking for closefrom : not found
Checking for closefrom in bsd : ok
Checking whether we can use SO_PEERCRED to get socket credentials : ok
Checking correct behavior of strtoll : ok
Checking for if_nametoindex : ok
Checking for strerror_r : ok
Checking for syslog : ok
Checking for gai_strerror : ok
Checking for get_current_dir_name : ok
Checking for timegm : ok
Checking for getifaddrs : ok
Checking for freeifaddrs : ok
Checking for mmap : ok
Checking for setgroups : ok
Checking for syscall : ok
Checking for setsid : ok
Checking for getgrent_r : ok
Checking for getgrgid_r : ok
Checking for getgrnam_r : ok
Checking for getgrouplist : ok
Checking for getpagesize : ok
Checking for getpwent_r : ok
Checking for getpwnam_r : ok
Checking for getpwuid_r : ok
Checking for epoll_create : ok
Checking for port_create : not found
Checking for getprogname : not found
Checking for getxattr : ok
Checking whether xattr interface takes additional options : not found
Checking for dlopen : not found
Checking for dlsym : not found
Checking for dlerror : not found
Checking for dlclose : not found
Checking for library dl : yes
Checking for dlopen in dl : ok
Checking for dlsym in dl : ok
Checking for dlerror in dl : ok
Checking for dlclose in dl : ok
Checking for declaration of dlopen : ok
Checking C prototype for dlopen : not found
Checking for fdatasync : ok
Checking for declaration of fdatasync : ok
Checking for clock_gettime : ok
Checking whether the clock_gettime clock ID CLOCK_MONOTONIC is available : ok
Checking whether the clock_gettime clock ID CLOCK_PROCESS_CPUTIME_ID is available : ok
Checking whether the clock_gettime clock ID CLOCK_REALTIME is available : ok
Checking for struct timespec : ok
Checking for header arpa/nameser.h : yes
Checking for header resolv.h : yes
Checking for res_search : not found
Checking for library resolv : yes
Checking for res_search in resolv : ok
Checking for header libintl.h : yes
Checking for library intl : no
Checking for declaration of dgettext : ok
Checking for declaration of gettext : ok
Checking for declaration of bindtextdomain : ok
Checking for declaration of textdomain : ok
Checking for declaration of bind_textdomain_codeset : ok
Checking for bindtextdomain : ok
Checking for textdomain : ok
Checking for bind_textdomain_codeset : ok
Checking for dgettext : ok
Checking for gettext : ok
Checking for pthread_create : not found
Checking for library pthread : yes
Checking for pthread_create in pthread : ok
Checking for pthread_attr_init : ok
Checking for pthread_mutexattr_setrobust : not found
Checking for pthread_mutexattr_setrobust in pthread : ok
Checking for declaration of PTHREAD_MUTEX_ROBUST : not found
Checking for declaration of PTHREAD_MUTEX_ROBUST (as enum) : ok
Checking for pthread_mutex_consistent : not found
Checking for pthread_mutex_consistent in pthread : ok
Checking for __thread local storage : ok
Checking for crypt : not found
Checking for library crypt : yes
Checking for crypt in crypt : ok
Checking for crypt_r : not found
Checking for crypt_r in crypt : ok
Checking for crypt_rn : not found
Checking for crypt_rn in crypt : ok
Checking for header readline.h : no
Checking for header readline/readline.h : yes
Checking for header readline/history.h : yes
Checking for variable rl_event_hook : ok
Checking for variable program_invocation_short_name : ok
Checking for declaration of snprintf : ok
Checking for declaration of vsnprintf : ok
Checking for declaration of asprintf : ok
Checking for declaration of vasprintf : ok
Checking for declaration of errno : ok
Checking for declaration of EWOULDBLOCK : ok
Checking for declaration of environ : ok
Checking for declaration of getgrent_r : ok
Checking for declaration of getpwent_r : ok
Checking for declaration of pread : ok
Checking for declaration of pwrite : ok
Checking for declaration of setenv : ok
Checking for declaration of setresgid : ok
Checking for declaration of setresuid : ok
Checking for eventfd : ok
Checking for header poll.h : yes
Checking for poll : ok
Checking for strptime : ok
Checking for declaration of strptime : ok
Checking for working strptime : ok
Checking for declaration of gettimeofday : ok
Checking C prototype for gettimeofday : not found
Checking C prototype for gettimeofday : ok
Checking for C99 vsnprintf : ok
Checking for HAVE_SHARED_MMAP : ok
Checking for HAVE_MREMAP : ok
Checking for HAVE_INCOHERENT_MMAP : ok
Checking for HAVE_IMMEDIATE_STRUCTURES : ok
Checking for HAVE_MKDIR_MODE : ok
Checking for member st_rdev in struct stat : ok
Checking for member st_rdev in struct stat : ok
Checking for member ss_family in struct sockaddr_storage : ok
Checking for member __ss_family in struct sockaddr_storage : not found
Checking for member sa_len in struct sockaddr : not found
Checking for member sin_len in struct sockaddr_in : not found
Checking for member sin6_len in struct sockaddr_in6 : not found
Checking for HAVE_UNIXSOCKET : ok
Checking for HAVE_SECURE_MKSTEMP : ok
Checking for HAVE_IFACE_GETIFADDRS : not found
Checking for HAVE_IFACE_AIX : not found
Checking for HAVE_IFACE_IFCONF : not found
Checking for HAVE_IFACE_IFREQ : not found
Checking for declaration of getpwent_r : ok
Checking C prototype for getpwent_r : not found
Checking for declaration of getgrent_r : ok
Checking C prototype for getgrent_r : not found
Checking C prototype for getpwent_r : not found
Checking C prototype for getgrent_r : not found
Checking for strerror_r : ok
Checking for XSI (rather than GNU) prototype for strerror_r : not found
Checking for program 'xsltproc' : /usr/bin/xsltproc
Checking for stylesheet http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl : ok
Checking for header sys/auxv.h : yes
Checking for getauxval : ok
Checking if compiler accepts -fstack-protector-strong : no
Checking if compiler accepts -fstack-protector : no
Checking if compiler accepts -fstack-clash-protection : yes
Checking linker accepts -Wl,-no-undefined : yes
Checking linker accepts ['-undefined', 'dynamic_lookup'] : no
Checking for program 'python3' : /usr/bin/python3
Checking for program 'python' : /usr/bin/python3
Checking for program 'python3' : /usr/bin/python3
Checking for python version >= 3.6.0 : 3.9.5
python headers : Check disabled du
e to --disable-python
'configure' finished successfully (13.850s)
PYTHONHASHSEED=1 WAF_MAKE=1 `PATH=buildtools/bin:../../buildtools/bin:$PATH which waf` build
Build commands will be stored in bin/default/compile_commands.json
Waf: Entering directory `/home/kubast2/Desktop/proot/aarch64/samba.org/ftp/talloc/2.3.2/bin/default'
[ 6/18] Linking bin/default/libtalloc.so
Waf: Leaving directory `/home/kubast2/Desktop/proot/aarch64/samba.org/ftp/talloc/2.3.2/bin/default'
'build' finished successfully (0.044s)
PYTHONHASHSEED=1 WAF_MAKE=1 `PATH=buildtools/bin:../../buildtools/bin:$PATH which waf` install
Waf: Entering directory `/home/kubast2/Desktop/proot/aarch64/samba.org/ftp/talloc/2.3.2/bin/default'
- install /home/kubast2/Desktop/proot/aarch64/samba.org/ftp/talloc/2.3.2/aarch64/lib/pkgconfig/talloc.pc (from bin/
default/talloc.pc)
[ 7/22] Linking bin/default/libtalloc.so
- symlink /home/kubast2/Desktop/proot/aarch64/samba.org/ftp/talloc/2.3.2/aarch64/lib/libtalloc.so.2 (to libtalloc.s
o.2.3.2)
- symlink /home/kubast2/Desktop/proot/aarch64/samba.org/ftp/talloc/2.3.2/aarch64/lib/libtalloc.so (to libtalloc.so.
2.3.2)
+ install /home/kubast2/Desktop/proot/aarch64/samba.org/ftp/talloc/2.3.2/aarch64/lib/libtalloc.so.2.3.2 (from bin/d
efault/libtalloc.so)
- install /home/kubast2/Desktop/proot/aarch64/samba.org/ftp/talloc/2.3.2/aarch64/include/talloc.h (from talloc.h)
- install /home/kubast2/Desktop/proot/aarch64/samba.org/ftp/talloc/2.3.2/aarch64/share/man/man3/talloc.3 (from bin/
default/man/talloc.3)
Waf: Leaving directory `/home/kubast2/Desktop/proot/aarch64/samba.org/ftp/talloc/2.3.2/bin/default'
'install' finished successfully (0.035s)#####################################################
The output library is x86 obviously
$ file /home/kubast2/Desktop/proot/aarch64/samba.org/ftp/talloc/2.3.2/aarch64/lib/libtalloc.so.2.3.2
/home/kubast2/Desktop/proot/aarch64/samba.org/ftp/talloc/2.3.2/aarch64/lib/libtalloc.so.2.3.2: ELF 64-bit LSB share
d object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=f75d0dbe6e1f1efe57920c673c37a1fc188a6d18, not
stripped
#####################################################

Maybe what I do is a bit insane, but I don't know how to go about it, and hence why it looks the way it does.
The scripts are meant to work with aarch64, arm, x86, x86_64 targets;
But I just don't have a clue what answers to give, what enivormental variables to change, nor how to get configure of this library right;
I do know if it uses host include paths and hence it probes the host rather than what I actually want it to probe;

Best regards,
Jakub Strzelecki


More information about the samba-technical mailing list