Error cross-compiling openconnect-8.08 for android - android

When i follow instructions here, i get this error when running latest instruction that is "make":
make[1]: Entering directory '/home/fasegiar/Downloads/openconnect-8.08'
CC libopenconnect_la-ssl.lo
In file included from ssl.c:41:
In file included from ./openconnect-internal.h:102:
In file included from /usr/include/libxml2/libxml/tree.h:1307:
In file included from /usr/include/libxml2/libxml/xmlmemory.h:218:
In file included from /usr/include/libxml2/libxml/threads.h:35:
In file included from /usr/include/libxml2/libxml/globals.h:18:
In file included from /usr/include/libxml2/libxml/parser.h:810:
/usr/include/libxml2/libxml/encoding.h:31:10: fatal error: 'unicode/ucnv.h' file not found
#include <unicode/ucnv.h>
^~~~~~~~~~~~~~~~
1 error generated.
Makefile:1037: recipe for target 'libopenconnect_la-ssl.lo' failed
make[1]: *** [libopenconnect_la-ssl.lo] Error 1
make[1]: Leaving directory '/home/fasegiar/Downloads/openconnect-8.08'
Makefile:749: recipe for target 'all' failed
make: *** [all] Error 2
The TARGET that i use is: armv7a-linux-androideabi
My TOOLCHAIN is: /home/fasegiar/Documents/android-ndk-r21/toolchains/llvm/prebuilt/linux-x86_64
Here is the output of the config.log after ./configure call

From the snippet you posted I can already tell you this is not going to work.
When cross-compiling you need to cross-compile all dependencies first for your target platform (ie Android) and then tell the configure script where to find the installed dependencies. For openconnect the dependencies are:
Required:
libxml2 (this in turn requires libicu, as your error points out)
zlib (this is bundled)
Either OpenSSL or GnuTLS (v3.2.10+) (see NDKPorts)
Optional:
p11-kit (for PKCS#11 support)
libp11 (also needed for PKCS#11 support if using OpenSSL)
libproxy
trousers (for TPMv1 support if using GnuTLS)
libtasn1 and either tss2-esys or IBM's TPM 2.0 TSS. (for TPMv2 support if using GnuTLS)
libstoken (for SecurID software token support)
libpskc (for RFC6030 PSKC file storage of HOTP/TOTP keys)
libpcsclite (for Yubikey hardware HOTP/HOTP support)

Related

Android kernel modules build failed

i want to build pixel3 blueline android10 kernel module.
my example test.c:
#include"linux/module.h"
#include"linux/kernel.h"
int init_module(void)
{
printk(KERN_INFO "Hello android kernel...\n");
return 0;
}
void cleanup_module(void)
{
printk(KERN_INFO "Goodbye android kernel...\n");
}
my Makefile:
obj-m += test.o
all:
make -C /home/ijiami/newdisk/android10/aosp_kernel M=$(PWD) modules
i get android kernel branch android-msm-crosshatch-4.9-android10-qpr3:
ijiami#ijiami-All-Series:~/newdisk/android10/aosp_kernel$ ls
build build.config out prebuilts prebuilts-master private
the error:
ijiami#ijiami-All-Series:~/newdisk/android10/ko_test$ make
make -C /home/ijiami/newdisk/android10/aosp_kernel M=/home/ijiami/newdisk/android10/ko_test modules
make[1]: Entering directory '/home/ijiami/newdisk/android10/aosp_kernel'
make[1]: *** No rule to make target 'modules'. Stop.
make[1]: Leaving directory '/home/ijiami/newdisk/android10/aosp_kernel' Makefile:4: recipe for target 'all' failed
make: *** [all] Error 2
It appears that the makefile in the specified directory is not being found or is not being executed properly. Make sure that you are in the correct directory and that the makefile exists.
The error message also suggests that there is no rule for building target 'modules' in the makefile. Check the makefile in the specified directory and ensure that it has the correct target and dependencies for building the kernel modules.
Make sure that the kernel source has been successfully built and that the environment is set up correctly for building kernel modules. This typically involves setting the CROSS_COMPILE variable to point to the correct toolchain and ensuring that the correct headers are in place.
Also check if you have the necessary build dependencies installed.
It might be helpful to check the build documentation for the specific Android version and device that you are working with to ensure that you are following the correct steps for building kernel modules.

Compiling Speex and SpeexDSP for Android 64bit architectures results in "error: impossible constraint in 'asm'"

Google recently announced policy requiring support libraries be recompiled for 64bit support so I'm hoping someone else has also been down this road recently.
I'm trying to compile Speex 1.2 for Android 64bit ARM. I was able to build speex but speexdsp fails.
Here are the steps I took, followed by the failure:
Created a standalone toolchain:
~/android-ndk-r17/build/tools/make-standalone-toolchain.sh --platform=android-21 --install-dir=~/speex-toolchain --arch=arm64
Set my PATH to look first in the toolchain's bin directory
export PATH=~/speex-toolchain/bin:$PATH
Set the CC and RANLIB env vars (maybe not necessary?)
export CC=aarch64-linux-android-gcc
export RANLIB=aarch64-linux-android-ranlib
./configure --host=arm
make
Make fails with:
make all-recursive
make[1]: Entering directory `/Users/spartygw/Downloads/speexdsp-1.2rc3'
Making all in libspeexdsp
make[2]: Entering directory `/Users/spartygw/Downloads/speexdsp-1.2rc3/libspeexdsp'
CC preprocess.lo
CC jitter.lo
CC mdf.lo
CC fftwrap.lo
CC filterbank.lo
CC resample.lo
In file included from resample.c:104:0:
resample.c: In function 'resampler_basic_direct_single':
resample_neon.h:148:5: error: impossible constraint in 'asm'
asm volatile (" cmp %[len], #0\n"
^
make[2]: *** [resample.lo] Error 1
make[2]: Leaving directory `/Users/spartygw/Downloads/speexdsp-1.2rc3/libspeexdsp'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/Users/spartygw/Downloads/speexdsp-1.2rc3'
make: *** [all] Error 2
Instead of steps 3 and 4, I would suggest just doing ./configure --host=aarch64-linux-android, which takes care of picking up the right tools, and which gets the target architecture right.
As for the main issue, the compilation error, the issue seems to be that speexdsp does support NEON (ARM's SIMD instruction set), but it detects it in configure in one way (by testing if #include <arm_neon.h> works and if NEON compiler intrinsics work, which work the same for both ARM and AArch64). Once it concluded that NEON is supported, it goes on to use it via inline assembly (which is different for ARM and AArch64).
So the conclusion is that speexdsp only supports NEON on ARM (32 bit), not on 64 bit, but speexdsp's configure script enables it incorrectly for AArch64 as well. Add --disable-neon to the configure call, and compilation should succeed.

Error while compiliing CyanogenMod 13

i keep getting this error when it builds the kernel module. i tried to go to the directory to fix it. (built-in.o) it didnt work and caused more problems with the build/kernel directory folder.
LD drivers/input/touchscreen/built-in.o
arm-eabi-ld: cannot find /home/taco/android/system/kernel/lge/msm8909/drivers/input/touchscreen/ft_gesture_lib.a: No such file or directory
/home/taco/android/system/kernel/lge/msm8909/scripts/Makefile.build:387: recipe for target 'drivers/input/touchscreen/built-in.o' failed
make[5]: *** [drivers/input/touchscreen/built-in.o] Error 1
/home/taco/android/system/kernel/lge/msm8909/scripts/Makefile.build:455: recipe for target 'drivers/input/touchscreen' failed
make[4]: *** [drivers/input/touchscreen] Error 2
/home/taco/android/system/kernel/lge/msm8909/scripts/Makefile.build:455: recipe for target 'drivers/input' failed
make[3]: *** [drivers/input] Error 2
/home/taco/android/system/kernel/lge/msm8909/Makefile:815: recipe for target 'drivers' failed
make[2]: *** [drivers] Error 2
Makefile:130: recipe for target 'sub-make' failed
make[1]: *** [sub-make] Error 2
make[1]: Leaving directory '/home/taco/android/system/kernel/lge/msm8909'
build/core/tasks/kernel.mk:286: recipe for target 'TARGET_KERNEL_BINARIES' failed
make: *** [TARGET_KERNEL_BINARIES] Error 2
make: Leaving directory '/home/taco/android/system'
#### make failed to build some targets (11:59 (mm:ss)) ####
taco#taco-VirtualBox:~/android/system$
Usually it happens when repo manifest uses projects of incompatible version, say if you take CM13 manifest and add msm8909 drivers which were built against some older kernel version than that used in CM13 manifest.
Are you building an existing official or unofficial CM port for your device, or do you assemble a new port? In any case you should provide more info about your repo manifest and CM port if you use any.
If the issue is that I described, it is usually hard to fix, as it means porting driver code to a newer kernel version. This work is usually made by people maintaining driver's code, it needs proper experience. Of course there's a chance that it may need just cosmetic changes, but it's a rare case.
In your repo manifest check what git repository is used for the driver, then check for what kernel version that code was used (it's usually can be seen in git tags/branches). There's a chance that the repo has an updated branch for kernel version you need, but your repo manifest takes an old version.

Android NDK - Building Limbo Android returns fatal error: config.h: No such file or directory

I'm trying to rebuild Limbo Android. I'm on Linux Mint.
All I changed was android-config.mak NDK_ROOT, exported variables NDK_ROOT. I've also exported NDK_MODULE_PATH to /home/pathtoandroidndk/sources, as per README instructions.
From terminal I do cd limbo-android/jni and then make.
Building returns this error:
jni/glib/glib/./libcharset/localcharset.c:22:20: fatal error: config.h: No such file or directory
compilation terminated.
make: *** [obj/local/armeabi-v7a/objs-debug/glib-2.0/./libcharset/localcharset.o] Error 1
make: Leaving directory `/home/me/limbo-android'
I've tried modifing Android.mk following instructions from Android NDK - Additional Include Directories and Unable to find header files - Android NDK, without success.
I came to conclusion that each module inside limbo-android needs it's own config.h file, while libcharset does not have one.
How do I solve this error? Is there a generic config.h (the one from NDK maybe?)
NOTE: I can build it without any problems on Windows 8.1 using mingw.

trying to build webkit from android externals

I've been trying to build Android WebKit from source (from here https://github.com/android/platform_external_webkit), but haven't had any success so far. I've run make and ndk-build from the root directory of my repo copy and from from the Source directory inside it, with the following results:
make from the root directory (makes sense, because there is no Makefile),
make: *** No targets specified and no makefile found. Stop.
make from the /Source directory:
make[1]: Entering directory `/webkit/Source/JavaScriptGlue'
../Makefile.shared:2: ../../Makefile.shared: No such file or directory
make[1]: *** No rule to make target `../../Makefile.shared'. Stop.
make[1]: Leaving directory `/webkit/Source/JavaScriptGlue'
make: *** [all] Error 2
ndk-build from root and ./Source:
Android NDK: Could not find application project directory !
Android NDK: Please define the NDK_PROJECT_PATH variable to point to it.
<NDK>/build/core/build-local.mk:130: *** Android NDK: Aborting . Stop.
Can anyone advise as to what I'm doing wrong? I've read mention of Android needing to be compiled as a whole, but since this is 'external', I thought it would compile standalone. Am I wrong about that? Or is there some configuration step I've missed? Or anything else?
Thanks for the help.
This doesn't allow you to get a build fully working, I suspect you did the same as me and cloned to a folder called webkit.
If you rename that to jni and then run ndk-build from the folder containing jni, it does at least get past the problem you mention. I now get the error:
jni/Android.mk:314: external/stlport/libstlport.mk: No such file or directory
Android NDK: Trying to define local module 'webcore' in jni/Source/WebKit/Android.mk.
Android NDK: But this module was already defined by jni/Source/WebKit/Android.mk.
/cygdrive/e/android-ndk-r7/build/core/build-module.mk:34: *** Android NDK: Aborting. . Stop.
I'm still trying to figure out how to solve this new error.

Categories

Resources