c3c
c3c copied to clipboard
[c3c on aarch64] wont compile on termux
Minor isssue, just wanted to try out c3 and also do c3 stuff on phone but there are no release binaries for arm.
Is is possible to compile c3c on and for aarch64?
As long as you're able to compile LLVM and LLD for it so you have those libraries, it should be straightforward to compile c3c.
~/c3c/build $ cmake -DLLVM_DIR=/usr/local/opt/llvm/lib/cmake/llvm/ ..
-- The C compiler identification is Clang 18.1.8
-- The CXX compiler identification is Clang 18.1.8
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /data/data/com.termux/files/usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /data/data/com.termux/files/usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
C3C version: 0.6.2
-- Found CURL: /data/data/com.termux/files/usr/lib/libcurl.so (found version "8.9.1")
-- Performing Test HAVE_FFI_CALL
-- Performing Test HAVE_FFI_CALL - Success
-- Found FFI: /data/data/com.termux/files/usr/lib/libffi.so
-- Performing Test Terminfo_LINKABLE
-- Performing Test Terminfo_LINKABLE - Success
-- Found Terminfo: /data/data/com.termux/files/usr/lib/libtinfo.so
-- Found ZLIB: /data/data/com.termux/files/usr/lib/libz.so (found version "1.3.1")
-- Found zstd: /data/data/com.termux/files/usr/lib/libzstd.so
-- Found LibXml2: /data/data/com.termux/files/usr/lib/libxml2.so (found version "2.13.3")
CMake Error at /data/data/com.termux/files/usr/lib/cmake/llvm/LLVMExports.cmake:1834 (message):
The imported target "LLVMDemangle" references the file
"/data/data/com.termux/files/usr/lib/libLLVMDemangle.a"
but this file does not exist. Possible reasons include:
* The file was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
* The installation package was faulty and contained
"/data/data/com.termux/files/usr/lib/cmake/llvm/LLVMExports.cmake"
but not all the files it references.
Call Stack (most recent call first):
/data/data/com.termux/files/usr/lib/cmake/llvm/LLVMConfig.cmake:364 (include)
CMakeLists.txt:133 (find_package)
-- Configuring incomplete, errors occurred!
Maybe you only have dynamically linked libraries available? If so the use -DC3_LINK_DYNAMIC=true with CMake.
Were you able to solve this?
Should I close this?
...
there is no /usr/local on termux and the flag doesnt work both with and without -DLLVM_DIR
Did you try the -DC3_LINK_DYNAMIC=true flag?
yes, that's the flag i was talking about
So you get the CMake error?
yes (just found out that there are libllvm and libllvm-static separetely and installed libllvm-static) and btw what is (/usr)/bin/FileCheck that it failed to find?
This is what it failed to get libLLVMDemangle
do i have to install it or what?
It is (unfortunately) not unusual that the LLVM libs are broken. So I would look for maybe earlier or later LLVM packages and see if they work. The error you see is in LLVM's own CMake script(!) which is run before any C3 compilation.
Ok, so basicly termux llvm doesnt support even setting up build directory, ok, thank you for info.
We'll try to set up LLVM builds for various linux variants later, that way we'll have everyone covered regardless of LLVM support through package managers.
I built c3c on termux successfully via installing these extra packages.
pkg i libllvm-static llvm-tools llvmgold libpolly
But unfortunatelly there is an error on compiling a hello-world file like this issue:
https://github.com/c3lang/c3c/issues/2170
Even if you set the target to android?
Even if you set the target to android?
It just show help string when
c3c --target android-aarch64 compile demo.c3
For a project rather than one file, I added target: android-aarch64 into project.json and ran c3c run, then got the below error:
; c3c run
7:
8: // Android 9
9: extern fn int* __errno() @if(env::ANDROID);
10: macro int errno() @if(env::ANDROID) => *__errno();
^^^^^
(/data/data/com.termux/files/home/code/c3c/lib/std/libc/os/errno.c3:10:11) Error: 'errno' would shadow a previous declaration.
30: module libc::os @if(!env::LIBC || !(env::LINUX || env::DARWIN || env::WIN32));
31: tlocal int _errno_c3 = 0;
32: fn void errno_set(int err) => _errno_c3 = err;
33: fn int errno() => _errno_c3;
^^^^^
(/data/data/com.termux/files/home/code/c3c/lib/std/libc/os/errno.c3:33:8) Note: The previous use of 'errno' was here.
8: // Android 9
9: extern fn int* __errno() @if(env::ANDROID);
10: macro int errno() @if(env::ANDROID) => *__errno();
11: macro void errno_set(int err) @if(env::ANDROID) => *(__errno()) = err;
^^^^^^^^^
(/data/data/com.termux/files/home/code/c3c/lib/std/libc/os/errno.c3:11:12) Error: 'errno_set' would shadow a previous declaration.
29: // Default
30: module libc::os @if(!env::LIBC || !(env::LINUX || env::DARWIN || env::WIN32));
31: tlocal int _errno_c3 = 0;
32: fn void errno_set(int err) => _errno_c3 = err;
^^^^^^^^^
(/data/data/com.termux/files/home/code/c3c/lib/std/libc/os/errno.c3:32:9) Note: The previous use of 'errno_set' was here.
I'll fix it.
@lost22git If you grab the latest from master, does it compile properly?
@lost22git If you grab the latest from master, does it compile properly?
I built c3c from latest source and
c3c init demo && cd demo
c3c run
but got error
Segmentation fault
- verbose:
c3c run -vvv
-- INFO: Version: 0.7.3
-- INFO: Detected executable path at /data/data/com.termux/files/home/code/c3c/build/
-- INFO: Library path found at /data/data/com.termux/files/home/code/c3c/build/../lib/
-- INFO: Searching for sources in src/**
-- INFO: Searching for wildcard sources in src/**
-- INFO: Added file main.c3
-- INFO: Triple picked was aarch64-linux-android.
-- INFO: Default was aarch64-unknown-linux-android24.
-- INFO: Added file ascii.c3
-- INFO: Added file atomic.c3
-- INFO: Added file atomic_nolibc.c3
-- INFO: Added file bits.c3
-- INFO: Added file anylist.c3
-- INFO: Added file bitset.c3
-- INFO: Added file elastic_array.c3
-- INFO: Added file enummap.c3
-- INFO: Added file enumset.c3
-- INFO: Added file hashmap.c3
-- INFO: Added file linkedlist.c3
-- INFO: Added file list.c3
-- INFO: Added file list_common.c3
-- INFO: Added file maybe.c3
-- INFO: Added file object.c3
-- INFO: Added file priorityqueue.c3
-- INFO: Added file range.c3
-- INFO: Added file ringbuffer.c3
-- INFO: Added file tuple.c3
-- INFO: Added file qoi.c3
-- INFO: Added file arena_allocator.c3
-- INFO: Added file backed_arena_allocator.c3
-- INFO: Added file dynamic_arena.c3
-- INFO: Added file heap_allocator.c3
-- INFO: Added file libc_allocator.c3
-- INFO: Added file on_stack_allocator.c3
-- INFO: Added file temp_allocator.c3
-- INFO: Added file tracking_allocator.c3
-- INFO: Added file array.c3
-- INFO: Added file ascii.c3
-- INFO: Added file bitorder.c3
-- INFO: Added file builtin.c3
-- INFO: Added file builtin_comparison.c3
-- INFO: Added file cinterop.c3
-- INFO: Added file conv.c3
-- INFO: Added file dstring.c3
-- INFO: Added file env.c3
-- INFO: Added file mem.c3
-- INFO: Added file mem_allocator.c3
-- INFO: Added file wasm_memory.c3
-- INFO: Added file cpu_detect.c3
-- INFO: Added file macho_runtime.c3
-- INFO: Added file main_stub.c3
-- INFO: Added file runtime.c3
-- INFO: Added file runtime_benchmark.c3
-- INFO: Added file runtime_test.c3
-- INFO: Added file asan.c3
-- INFO: Added file sanitizer.c3
-- INFO: Added file tsan.c3
-- INFO: Added file slice2d.c3
-- INFO: Added file string.c3
-- INFO: Added file string_iterator.c3
-- INFO: Added file string_to_real.c3
-- INFO: Added file test.c3
-- INFO: Added file types.c3
-- INFO: Added file values.c3
-- INFO: Added file crypto.c3
-- INFO: Added file dh.c3
-- INFO: Added file rc4.c3
-- INFO: Added file base32.c3
-- INFO: Added file base64.c3
-- INFO: Added file csv.c3
-- INFO: Added file encoding.c3
-- INFO: Added file hex.c3
-- INFO: Added file json.c3
-- INFO: Added file FrameScheduler.c3
-- INFO: Added file adler32.c3
-- INFO: Added file crc32.c3
-- INFO: Added file crc64.c3
-- INFO: Added file fnv32a.c3
-- INFO: Added file fnv64a.c3
-- INFO: Added file hmac.c3
-- INFO: Added file md5.c3
-- INFO: Added file sha1.c3
-- INFO: Added file sha256.c3
-- INFO: Added file bits.c3
-- INFO: Added file file.c3
-- INFO: Added file formatter.c3
-- INFO: Added file formatter_private.c3
-- INFO: Added file io.c3
-- INFO: Added file chdir.c3
-- INFO: Added file file_libc.c3
-- INFO: Added file file_nolibc.c3
-- INFO: Added file fileinfo.c3
-- INFO: Added file getcwd.c3
-- INFO: Added file ls.c3
-- INFO: Added file mkdir.c3
-- INFO: Added file rmdir.c3
-- INFO: Added file rmtree.c3
-- INFO: Added file temp_directory.c3
-- INFO: Added file path.c3
-- INFO: Added file stream.c3
-- INFO: Added file buffer.c3
-- INFO: Added file bytebuffer.c3
-- INFO: Added file bytereader.c3
-- INFO: Added file bytewriter.c3
-- INFO: Added file limitreader.c3
-- INFO: Added file multireader.c3
-- INFO: Added file multiwriter.c3
-- INFO: Added file scanner.c3
-- INFO: Added file teereader.c3
-- INFO: Added file libc.c3
-- INFO: Added file libc_extra.c3
-- INFO: Added file android.c3
-- INFO: Added file darwin.c3
-- INFO: Added file errno.c3
-- INFO: Added file freebsd.c3
-- INFO: Added file linux.c3
-- INFO: Added file posix.c3
-- INFO: Added file win32.c3
-- INFO: Added file termios.c3
-- INFO: Added file bigint.c3
-- INFO: Added file complex.c3
-- INFO: Added file easing.c3
-- INFO: Added file math.c3
-- INFO: Added file __cos.c3
-- INFO: Added file __cosdf.c3
-- INFO: Added file __fmod.c3
-- INFO: Added file __sin.c3
-- INFO: Added file __sindf.c3
-- INFO: Added file __tan.c3
-- INFO: Added file __tandf.c3
-- INFO: Added file acos.c3
-- INFO: Added file asin.c3
-- INFO: Added file atan.c3
-- INFO: Added file atanh.c3
-- INFO: Added file ceil.c3
-- INFO: Added file cos.c3
-- INFO: Added file exp.c3
-- INFO: Added file exp2.c3
-- INFO: Added file fabs.c3
-- INFO: Added file floor.c3
-- INFO: Added file frexp.c3
-- INFO: Added file ldexp.c3
-- INFO: Added file log.c3
-- INFO: Added file log1p.c3
-- INFO: Added file math_nolibc.c3
-- INFO: Added file pow.c3
-- INFO: Added file rempi.c3
-- INFO: Added file round.c3
-- INFO: Added file scalbn.c3
-- INFO: Added file sin.c3
-- INFO: Added file sincos.c3
-- INFO: Added file tan.c3
-- INFO: Added file trig.c3
-- INFO: Added file trunc.c3
-- INFO: Added file matrix.c3
-- INFO: Added file quaternion.c3
-- INFO: Added file random.c3
-- INFO: Added file math.lcg.c3
-- INFO: Added file math.mcg.c3
-- INFO: Added file math.msws.c3
-- INFO: Added file math.pcg.c3
-- INFO: Added file math.seeder.c3
-- INFO: Added file math.sfc.c3
-- INFO: Added file math.simple_random.c3
-- INFO: Added file i128.c3
-- INFO: Added file math_supplemental.c3
-- INFO: Added file uuid.c3
-- INFO: Added file vector.c3
-- INFO: Added file inetaddr.c3
-- INFO: Added file net.c3
-- INFO: Added file android.c3
-- INFO: Added file common.c3
-- INFO: Added file darwin.c3
-- INFO: Added file linux.c3
-- INFO: Added file posix.c3
-- INFO: Added file win32.c3
-- INFO: Added file socket.c3
-- INFO: Added file socket_private.c3
-- INFO: Added file tcp.c3
-- INFO: Added file udp.c3
-- INFO: Added file url.c3
-- INFO: Added file url_encoding.c3
-- INFO: Added file log.c3
-- INFO: Added file backtrace.c3
-- INFO: Added file cpu.c3
-- INFO: Added file env.c3
-- INFO: Added file general.c3
-- INFO: Added file heap.c3
-- INFO: Added file linux.c3
-- INFO: Added file cf_allocator.c3
-- INFO: Added file cf_array.c3
-- INFO: Added file cocoa.c3
-- INFO: Added file core_foundation.c3
-- INFO: Added file darwin.c3
-- INFO: Added file general.c3
-- INFO: Added file heap.c3
-- INFO: Added file objc.c3
-- INFO: Added file general.c3
-- INFO: Added file general.c3
-- INFO: Added file os.c3
-- INFO: Added file clock.c3
-- INFO: Added file files.c3
-- INFO: Added file general.c3
-- INFO: Added file heap.c3
-- INFO: Added file net.c3
-- INFO: Added file process.c3
-- INFO: Added file threads.c3
-- INFO: Added file subprocess.c3
-- INFO: Added file clock.c3
-- INFO: Added file files.c3
-- INFO: Added file gdi.c3
-- INFO: Added file general.c3
-- INFO: Added file heap.c3
-- INFO: Added file process.c3
-- INFO: Added file types.c3
-- INFO: Added file wincon.c3
-- INFO: Added file windef.c3
-- INFO: Added file winuser.c3
-- INFO: Added file ws2def.c3
-- INFO: Added file wsa.c3
-- INFO: Added file binarysearch.c3
-- INFO: Added file countingsort.c3
-- INFO: Added file insertionsort.c3
-- INFO: Added file quicksort.c3
-- INFO: Added file sort.c3
-- INFO: Added file sorted.c3
-- INFO: Added file buffered_channel.c3
-- INFO: Added file event_thread.c3
-- INFO: Added file fixed_pool.c3
-- INFO: Added file cpu.c3
-- INFO: Added file thread_none.c3
-- INFO: Added file thread_posix.c3
-- INFO: Added file thread_win32.c3
-- INFO: Added file pool.c3
-- INFO: Added file thread.c3
-- INFO: Added file unbuffered_channel.c3
-- INFO: Added file clock.c3
-- INFO: Added file datetime.c3
-- INFO: Added file format.c3
-- INFO: Added file time_darwin.c3
-- INFO: Added file time_posix.c3
-- INFO: Added file time_win32.c3
-- INFO: Added file time.c3
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-armv8,+neon
-- INFO: CPU: (null)
-- INFO: Features: +crc,+lse,+rdm,+fp-arm
-- AST/EXPR/TYPE INFO --
* Ast size: 56 bytes
* Decl size: 136 bytes
* Expr size: 56 bytes
* TypeInfo size: 40 bytes
* Ast memory use: 3194kb (58416 elements)
* Decl memory use: 4531kb (34119 elements)
* Expr memory use: 13086kb (239300 elements)
* TypeInfo memory use: 1431kb (36643 elements)
-- ARENA INFO --
* Memory used: 32501 Kb
* Allocations: 114518
* String memory used: 313 Kb
-- INFO: Will use 4 thread(s).
-- INFO: Using cc linker.
Segmentation fault
I made some further updates.
I made some further updates.
Program linked to executable 'build/demo'.
Launching ./build/demo
ERROR: 'No method 'acquire' could be found on target', in _$main (mem_allocator.c3:85)
Program interrupted by signal 5.
Hmm.. looks like the libc startup isn't running for some reason.
This is the current state on my phone (ignore logging that's leftover $echo from testing a prev c3c bug):
I made some further updates.
Program linked to executable 'build/demo'. Launching ./build/demo ERROR: 'No method 'acquire' could be found on target', in _$main (mem_allocator.c3:85) Program interrupted by signal 5.
For hello-wrold demo, this error is raised on main function with String[] args. If without the params, it run well.
Edit:
It seems that errors will occur as long as memory allocation is involved.
This is likely due to the incorrect libc startup files being linked. This prevents libc startup and so @init functions are not run.
This is likely due to the incorrect libc startup files being linked. This prevents libc startup and so
@initfunctions are not run.
; ldd $(which fd)
libdl.so => /system/lib64/libdl.so
libc.so => /system/lib64/libc.so
ld-android.so => /system/lib64/ld-android.so
hello/c3 on main [✘!?]
; ldd demo
libdl.so => /system/lib64/libdl.so
libm.so => /system/lib64/libm.so
libc.so => /system/lib64/libc.so
ld-android.so => /system/lib64/ld-android.so
What should I do to make it work ?