Related
Hi,
i'm an android app developer. I have an HTC Desire and I would test kernel issue for root my device.
For check kernel or software issue, I compile on my linuxbox (on Intel) and binary file run in the same arch that compile it.
In an arm device like my android phone, how can I compile c source file?
We will say: "With an arm croos toolchain!"...
I have read http://www.hermann-uwe.de/blog/buil...-with-binutils-gcc-newlib-and-gdb-from-source that explain how to build the toolchain, but binary compiler that this steps create not compile a simple "Hello World" program:
Code:
#include <stdio.h>
int main() {
printf("Hello, World!");
return 0;
}
because not have stdio.h header... O_O
So I have downloaded the GNU ARM toolchain binary for linux, but the compiler don't work because I can't run it on my linuxbox...
Why?
mmm... So I have copied the "include" directory from GNU Arm ToolChain to toolchain compiled from source (how explaine the link above).
now stdio.h is present but...
Code:
/tmp/ccfmzOMU.s: Assembler messages:
/tmp/ccfmzOMU.s:11: Error: junk at end of line, first unrecognized character is `@'
/tmp/ccfmzOMU.s:12: Error: junk at end of line, first unrecognized character is `@'
/tmp/ccfmzOMU.s:13: Error: too many memory references for `mov'
/tmp/ccfmzOMU.s:14: Error: no such instruction: `stmfd sp!,{fp,ip,lr,pc}'
/tmp/ccfmzOMU.s:15: Error: too many memory references for `sub'
/tmp/ccfmzOMU.s:16: Error: no such instruction: `ldr r0,.L3'
/tmp/ccfmzOMU.s:17: Error: no such instruction: `bl printf'
/tmp/ccfmzOMU.s:18: Error: expecting operand after ','; got nothing
/tmp/ccfmzOMU.s:19: Error: too many memory references for `mov'
/tmp/ccfmzOMU.s:20: Error: no such instruction: `ldmfd sp,{fp,sp,pc}'
How can i build binary elf file for my Desire architecture?
Thanks in andvance!
I am unable to link to any resources here due to them being behind a corporate firewall, but this link I found might help:
http://www.ibm.com/developerworks/linux/library/l-arm-toolchain/index.html
Here is a link to the tools:
http://www.codesourcery.com/sgpp/lite/arm/portal/[email protected]=lite
Let me know if this is not what you are looking for.
Yes, this is what I need.
Thanks!
Now I've tried to compile my hello world in C for ARM, but the binary not run on my desire... I think that I have compiled with a mistake mcpu parameter.
The result is that if I copy helloworld binary in /data/local path in my Desire, set execution permission and execute the program:
Code:
$ ./helloworld
./helloworld
./helloworld: not found
the output of 'ls -l' command show that helloworld file exist and have 'x' permission...
So I think that is an incompatibily issue of the binary file...
Which one "-mcpu" value is correct for the Qualcomm Snapdragon QSD8250 inside HTC Desire?
I've tried any arm7* but it's the same... "not found".
Any ideas?
@azatoth
I get the same on my hero. Tried to run it on a other arm device (Linksys NSLU2) the same "not found" appears
mopodo said:
@azatoth
I get the same on my hero. Tried to run it on a other arm device (Linksys NSLU2) the same "not found" appears
Click to expand...
Click to collapse
Do you have found a solution for that?
I have no real way to test this, but the Snapdragon is a Cortex-A8 I believe... Try the following:
Code:
-mcpu=cortex-a8 -mfpu=neon
I hope this works, let me know if the behavior changes...
Vermithrax said:
I have no real way to test this, but the Snapdragon is a Cortex-A8 I believe... Try the following:
Code:
-mcpu=cortex-a8 -mfpu=neon
I hope this works, let me know if the behavior changes...
Click to expand...
Click to collapse
don't work yet... the response is always the same: not found...
you are linking to the wrong libc, you have to link to bionic... Are you using the full android build compiler?
Hello,
I have downloaded the libpcap in external folder from android source code using the Git and
repo. I used the toolcains of ndk (android-ndk-r5b) to compile the library following these
steps:
./configure --prefix=path-to-android-src/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin
make clean
make
make install
and then a file libpcap.a is produced.
I have make a simple sniffer using libpcap (sniffer.c). When I try to compile it, these errors occur:
agcc sniffer.c libpcap.a
sniffer.c:9:18: error: pcap.h: No such file or directory
sniffer.c:19: warning: 'struct pcap_pkthdr' declared inside parameter list
sniffer.c:19: warning: its scope is only this definition or declaration, which is probably not what you want
sniffer.c: In function 'processPacket':
sniffer.c:23: warning: incompatible implicit declaration of built-in function 'printf'
sniffer.c:24: error: dereferencing pointer to incomplete type
sniffer.c:26: error: dereferencing pointer to incomplete type
sniffer.c:33: error: dereferencing pointer to incomplete type
sniffer.c: In function 'main':
sniffer.c:45: error: 'pcap_t' undeclared (first use in this function)
sniffer.c:45: error: (Each undeclared identifier is reported only once
sniffer.c:45: error: for each function it appears in.)
sniffer.c:45: error: 'descr' undeclared (first use in this function)
sniffer.c:46: error: 'PCAP_ERRBUF_SIZE' undeclared (first use in this function)
sniffer.c:62: warning: incompatible implicit declaration of built-in function 'printf'
sniffer.c:66: warning: incompatible implicit declaration of built-in function 'fprintf'
sniffer.c:66: error: 'stderr' undeclared (first use in this function)
sniffer.c:72: warning: incompatible implicit declaration of built-in function 'fprintf'
when I try to produce the object code in advance:
agcc -c sniffer.o sniffer.c
the same errors occured.
Can someone explain me how to solve this problem?
here is the alias of agcc I use in bashrc file:
./configure --prefix=/home/petsas/projects/mobile-attacks/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/
Also, I have attached a file with the outputs of the commands above: configure, make and make install.
Thank you in advance!
I used the options -I and -L to specify the include and library files, and these errors are gone now..
Here is my new error log:
agcc --static -I /home/petsas/projects/mobile-attacks/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/include -L /home/petsas/projects/mobile-attacks/mydroid/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/lib -o sniffer sniffer.c libpcap.a
/home/petsas/projects/mobile-attacks/android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: libpcap.a(pcap-linux.o): Relocations in generic ELF (EM: 3)
/home/petsas/projects/mobile-attacks/android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: libpcap.a(pcap-linux.o): Relocations in generic ELF (EM: 3)
/home/petsas/projects/mobile-attacks/android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: libpcap.a(pcap-linux.o): Relocations in generic ELF (EM: 3)
libpcap.a: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
any ideas?
I'm not 100% sure, but if you want to build native library for android you shouldn't use ./configure script. You should create Android.mk file and build library using it. Android.mk file is a native build environment for Android.
Refer to android-ndk\docs\ANDROID-MK.html for more information.
Yeah!
Thank you Zuljin!!!
I put the libpcap direcotry into the android-ndk-r5b/samples, I modified a bit the Android.mdk
and the structure of the direcotry, so as to look like the other ones inside the samples dir and
I used the ndk-build command inside the android-ndk-r5b direcory:
ndk-build -C samples/android-ndk-r5b
All worked fine! I was able to produce a libpicap.so file, and put it in the phone using the
commands:
in android:
# su
# mount -o,rw remount /dev/block/mtdblock4 /system/lib
in my Desktop:
$ adb push libpcap.so /system/lib/
I made a simple sniffer, I compiled and linked with the libpcap.so and works perfectly in
my HTC Hero!
Hi,
I have also trying to build this libpcap on Android.
I have downloaded the source from platform_external_libpcap and put all these files under jni directory for a android-ndk project (default) and tried building using ndk-build script.
But nothing happens but the control returns plainly without compiling the .so or .a file.
Can you tell me how you organized the folders in ndk project.?
regards,
Vijayan
Hello Vijayan,
You have to make a directory i.e. libpcap and then inside this directory,
you've got to create another one named as jni and put there all the source
files, as you have done. Then, inside this directory (jni) create a file named as
Android.mk so that it contains the follow lines:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:=\
/bpf_dump.c\
/bpf/net/bpf_filter.c\
/bpf_image.c\
/etherent.c\
/fad-gifc.c\
/gencode.c\
/grammar.c\
/inet.c\
/nametoaddr.c\
/optimize.c\
/pcap.c\
/pcap-linux.c\
/savefile.c\
/scanner.c\
/version.c
LOCAL_CFLAGS:=-O2 -g
LOCAL_CFLAGS+=-DHAVE_CONFIG_H -D_U_="__attribute__((unused))" -Dlinux -D__GLIBC__ -D_GNU_SOURCE
LOCAL_MODULE:= pcap
LOCAL_MODULE_FILENAME:= libpcap
LOCAL_LDLIBS := \
-ldl
include $(BUILD_SHARED_LIBRARY)
Then, you only have to type this command:
ndk-build -C <path-to-jni-direcotry>
That's all! Now, inside the libpcap directory, and in the path:
libpcap/libs/armeabi/ should have been created the file you want:
libpcap.so
Let me know if you have any problems,
Thanasis
Hi,
Thanks. Now I'm able to compile the libpcap.so.
using this .so I have compiled the jpcap-0.7 (C source fiiles) to generate libjpcap.so.
Then I have created my Sniffer Application on Android. I have added the jpcap.jar, jpcap.so and libpcap.so in the lib folder of my Application.
But when I call this line
NetworkInterface[] devices = JpcapCaptor.getDeviceList();
am getting the following runtime error:
FATAL EXCEPTION: main
java.lang.UnsatisfiedLinkError: getDeviceList
at jpcap.JpcapCaptor.getDeviceList(Native Method)
at com.example.snifferapp.SnifferApp.onCreate(SnifferApp.java:26)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3683)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
Click to expand...
Click to collapse
Can you tellme What is going wrong here ?
Thanks.
Vijay
Yes, I had the same problem with you when I tried to make a sniffing application
using another one known java wrapper of libpcap: the jNetPcap, and particularly
I couldn't get the devices through this call: Pcap.findAllDevs(alldevs, errbuf);
That's because, even if you have root privileges on the console of the phone, as
you have a rooted phone, you cannot raun an application as root. That's not possible.
You can do that, only if your application is signed with the key of the platform, that is
of the Android OS that runs inside your phone.. So, the only way is to built by yourself
the Android OS and put it into the mobile. And then you have to sign your application
with the key that you have used to sign the OS.
For more information you can look here:
http://stackoverflow.com/questions/5966603/jnetpcap-on-android-problem-with-findalldevs-method
Hi,
Thanks for your reply.
But its very confusing.
Can you tellme, Whether Its possible to run a client application into Android which can monitor the network traffic in the device by anymeans?
If then what are all the possible ways. (like jpcap, etc....)
My idea is to develop a simple client application. I cannot think of building the whole Android OS and loading it into each device.
Hope to get a reply.
Thanks,
Vijay
I haven't done it before, because I only experience with native
programs that do network monitoring..
I think there are two simple solutions here. The first one is what exactly
Shark does: A tcpdump is running in the background that produces
traffic traces (pcap files) and you can develop an application that in periodic
time intervals reads these files and produce some outputs to the user.
The other one solution I can imagine is to develop again a native sniffer in
C with libpcap and then for each packet you receive or better for a batch of
packets you receive, you can send it through sockets to you application for
further processing..
Hope that helps..
FYI: There is a new application in Android called faceniff that does the work of
firesheep. That is you can hijack web sessions from facebook users. How is it
possible this application to monitor the web traffic of the phone? I think that
uses a native sniffer for this.. I am not sure, but it is not open source..
Hi, I did the steps as you described above:
Create a dir 'libpcap' with subdir 'jni'
Download the 'platform_external_libpcap' from 'github.com/android/platform_external_libpcap' (based on original libpcap version 0.9.8) and put the files at 'libpcap/jni'
Change the 'Android.mk' (see post number 6 of this thread)
run 'path/to/ndk-build -C path/to/libpcap/ndk' (android-ndk-r6)
When I do the last step of this list no 'libpcap/libs/armeabi/libpcap.so' will be produced but I get this output (I can reproduce this behavior on ubuntu 10.04 x86_64 and on debian i586):
> <user>@<host>:~/android/libpcap$ path/to/android-ndk-r6/ndk-build -C /home/<user>/android/libpcap/jni
> make: Entering directory `/home/<user>/android/libpcap/jni'
> SharedLibrary : libpcap.so
> /home/<user>/android/libpcap/obj/local/armeabi/objs/pcap//grammar.o: In function `pcap_parse':
> /home/<user>/android/libpcap/jni/y.tab.c:1711: undefined reference to `pcap_lex'
> collect2: ld returned 1 exit status
> make: *** [/home/<user>/android/libpcap/obj/local/armeabi/libpcap.so] Error 1
> make: Leaving directory `/home/<user>/android/libpcap/jni'
Does someone know what this error means and how to solve this problem?
daim0nas said:
Yeah!
Thank you Zuljin!!!
I put the libpcap direcotry into the android-ndk-r5b/samples, I modified a bit the Android.mdk
and the structure of the direcotry, so as to look like the other ones inside the samples dir and
I used the ndk-build command inside the android-ndk-r5b direcory:
ndk-build -C samples/android-ndk-r5b
All worked fine! I was able to produce a libpicap.so file, and put it in the phone using the
commands:
in android:
# su
# mount -o,rw remount /dev/block/mtdblock4 /system/lib
in my Desktop:
$ adb push libpcap.so /system/lib/
I made a simple sniffer, I compiled and linked with the libpcapp.so and works perfectly in
my HTC Hero!
Click to expand...
Click to collapse
Can you post your libpcap for us please.
Hi!
I'm trying to compile my first cyanogen rom for my Galaxy 3 (i5800). I downloaded the Android source from androidarmv6 and the device folder from marcellusbe's repo and i edited it to include samsung fimg drivers (original device folders has openfimg which IMHO is still not good for daily usage because of lag, very limited opengles support etc...) and the device configuration and filesystem table to support MTD converted phones. At first compiling went pretty good i just got some: "Thumb does not support this addressing mode *" that i fixed by adding
Code:
LOCAL_CFLAGS += -marm
to involved Android.mk however after resolving those errors it started compiling host libraries and it started giving TONS of no such file or directory errors, but compilation didn't stop so i didn't touch anything, then this error appeared and i can't find any patch/solution/workaround:
Code:
target thumb C: libhardware_legacy <= hardware/libhardware_legacy/wifi/wifi.c
hardware/libhardware_legacy/wifi/wifi.c: In function 'update_ctrl_interface':
hardware/libhardware_legacy/wifi/wifi.c:473:5: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
hardware/libhardware_legacy/wifi/wifi.c: In function 'wifi_start_supplicant':
hardware/libhardware_legacy/wifi/wifi.c:894:20: error: dereferencing pointer to incomplete type
hardware/libhardware_legacy/wifi/wifi.c:911:26: error: dereferencing pointer to incomplete type
make: *** [/home/francesco/cm10_port/cm_armv6/out/target/product/apollo/obj/SHARED_LIBRARIES/libhardware_legacy_intermediates/wifi/wifi.o] Error 1
I also downloaded the latest wifi.c from cyanogen github but nothing.
Someone knows how to resolve this?
Thanks in advance!
Hi,
so I've build ROM before (LineageOS and more recently Pixel Experience) but am running into an error which might be just a syntax problem in one of the source files. Before messing things up by editing these files myself, wanted to ask here which best course of action to take. (target phone: Redmi Note 10 Pro)
My build setup is a Proxmox 7 server hosting an Ubuntu 20.04 VM which has a Nvidia vGPU installed.
Bash:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Mon_Nov_30_19:08:53_PST_2020
Cuda compilation tools, release 11.2, V11.2.67
Build cuda_11.2.r11.2/compiler.29373293_0
The build starts, but after completing the kernel compilation the following error occurs.
Bash:
In file included from ../../../../../../kernel/xiaomi/sm6150/init/version.c:9:
./include/generated/compile.h:7:24: warning: missing terminating '"' character [-Winvalid-pp-token]
#define LINUX_COMPILER "Android (6877366 based on r383902b1) clang version 11.0.2 (https://android.googlesource.com/toolchai
n/llvm-project b397f81060ce6d701042b782172ed13bee898b79)
^
./include/generated/compile.h:8:1: error: unknown type name 'Found'
Found CUDA installation: /usr/local/cuda, version 7.0, GNU ld (binutils-2.27-bd24d23f) 2.27.0.20170315"
^
./include/generated/compile.h:8:11: error: expected ';' after top level declarator
Found CUDA installation: /usr/local/cuda, version 7.0, GNU ld (binutils-2.27-bd24d23f) 2.27.0.20170315"
^
;
./include/generated/compile.h:8:103: warning: missing terminating '"' character [-Winvalid-pp-token]
Found CUDA installation: /usr/local/cuda, version 7.0, GNU ld (binutils-2.27-bd24d23f) 2.27.0.20170315"
^
In file included from ../../../../../../kernel/xiaomi/sm6150/init/version.c:10:
In file included from ../../../../../../kernel/xiaomi/sm6150/include/linux/module.h:9:
In file included from ../../../../../../kernel/xiaomi/sm6150/include/linux/list.h:5:
../../../../../../kernel/xiaomi/sm6150/include/linux/types.h:102:10: error: unknown type name '__s8'; did you mean '__u8'?
typedef __s8 int8_t;
^~~~
__u8
../../../../../../kernel/xiaomi/sm6150/include/uapi/asm-generic/int-ll64.h:21:23: note: '__u8' declared here
typedef unsigned char __u8;
^
../../../../../../kernel/xiaomi/sm6150/init/version.c:46:26: error: expected ';' after top level declarator
LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n";
^
;
../../../../../../kernel/xiaomi/sm6150/init/version.c:51:6: error: expected ';' after top level declarator
" (" LINUX_COMPILER ") %s\n";
^
;
2 warnings and 5 errors generated.
make[2]: *** [/home/wvthoog/android/pixel-experience/kernel/xiaomi/sm6150/scripts/Makefile.build:361: init/version.o] Error
1
make[2]: *** Waiting for unfinished jobs....
Like i said before, it looks like there are some syntax errors somewhere in one of the sourcefiles but at this point have no clue which files to edit to remedy this error.
Also, if i compile the same ROM for my Redmi Note 10 Pro (sweet) on another VM (Ubuntu 20.04) without a Nvidia GPU the build succeeds .
This sounds like a bug somewhere in one of the source files of Pixel Experience. Tried filing an issue on their Github page but their bot is fairly aggressive in closing issues if they don't meet their posting requirements.
So my question drills down to.... do other experience the same problem when using CUDA during the build process of Pixel Experience and possibly have a solution ?
Secondly, is there an option to disable CUDA during the build process ?
Thanks
populus_ said:
Hi,
so I've build ROM before (LineageOS and more recently Pixel Experience) but am running into an error which might be just a syntax problem in one of the source files. Before messing things up by editing these files myself, wanted to ask here which best course of action to take. (target phone: Redmi Note 10 Pro)
My build setup is a Proxmox 7 server hosting an Ubuntu 20.04 VM which has a Nvidia vGPU installed.
Bash:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Mon_Nov_30_19:08:53_PST_2020
Cuda compilation tools, release 11.2, V11.2.67
Build cuda_11.2.r11.2/compiler.29373293_0
The build starts, but after completing the kernel compilation the following error occurs.
Bash:
In file included from ../../../../../../kernel/xiaomi/sm6150/init/version.c:9:
./include/generated/compile.h:7:24: warning: missing terminating '"' character [-Winvalid-pp-token]
#define LINUX_COMPILER "Android (6877366 based on r383902b1) clang version 11.0.2 (https://android.googlesource.com/toolchai
n/llvm-project b397f81060ce6d701042b782172ed13bee898b79)
^
./include/generated/compile.h:8:1: error: unknown type name 'Found'
Found CUDA installation: /usr/local/cuda, version 7.0, GNU ld (binutils-2.27-bd24d23f) 2.27.0.20170315"
^
./include/generated/compile.h:8:11: error: expected ';' after top level declarator
Found CUDA installation: /usr/local/cuda, version 7.0, GNU ld (binutils-2.27-bd24d23f) 2.27.0.20170315"
^
;
./include/generated/compile.h:8:103: warning: missing terminating '"' character [-Winvalid-pp-token]
Found CUDA installation: /usr/local/cuda, version 7.0, GNU ld (binutils-2.27-bd24d23f) 2.27.0.20170315"
^
In file included from ../../../../../../kernel/xiaomi/sm6150/init/version.c:10:
In file included from ../../../../../../kernel/xiaomi/sm6150/include/linux/module.h:9:
In file included from ../../../../../../kernel/xiaomi/sm6150/include/linux/list.h:5:
../../../../../../kernel/xiaomi/sm6150/include/linux/types.h:102:10: error: unknown type name '__s8'; did you mean '__u8'?
typedef __s8 int8_t;
^~~~
__u8
../../../../../../kernel/xiaomi/sm6150/include/uapi/asm-generic/int-ll64.h:21:23: note: '__u8' declared here
typedef unsigned char __u8;
^
../../../../../../kernel/xiaomi/sm6150/init/version.c:46:26: error: expected ';' after top level declarator
LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n";
^
;
../../../../../../kernel/xiaomi/sm6150/init/version.c:51:6: error: expected ';' after top level declarator
" (" LINUX_COMPILER ") %s\n";
^
;
2 warnings and 5 errors generated.
make[2]: *** [/home/wvthoog/android/pixel-experience/kernel/xiaomi/sm6150/scripts/Makefile.build:361: init/version.o] Error
1
make[2]: *** Waiting for unfinished jobs....
Like i said before, it looks like there are some syntax errors somewhere in one of the sourcefiles but at this point have no clue which files to edit to remedy this error.
Also, if i compile the same ROM for my Redmi Note 10 Pro (sweet) on another VM (Ubuntu 20.04) without a Nvidia GPU the build succeeds .
This sounds like a bug somewhere in one of the source files of Pixel Experience. Tried filing an issue on their Github page but their bot is fairly aggressive in closing issues if they don't meet their posting requirements.
So my question drills down to.... do other experience the same problem when using CUDA during the build process of Pixel Experience and possibly have a solution ?
Secondly, is there an option to disable CUDA during the build process ?
Thanks
Click to expand...
Click to collapse
Just bumped to your question, yes it happens with me too, Pcoco F3 Lineage, what I have done is to have a ubuntu (separate SSD) to boot from when I need to build, and use the other system for all other uses including cuda transcoding.
You're in the wrong forum. This is exclusively about the Xiaomi Redmi Note 10. No other version.
populus_ said:
Hi,
so I've build ROM before (LineageOS and more recently Pixel Experience) but am running into an error which might be just a syntax problem in one of the source files. Before messing things up by editing these files myself, wanted to ask here which best course of action to take. (target phone: Redmi Note 10 Pro)
My build setup is a Proxmox 7 server hosting an Ubuntu 20.04 VM which has a Nvidia vGPU installed.
Bash:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Mon_Nov_30_19:08:53_PST_2020
Cuda compilation tools, release 11.2, V11.2.67
Build cuda_11.2.r11.2/compiler.29373293_0
The build starts, but after completing the kernel compilation the following error occurs.
Bash:
In file included from ../../../../../../kernel/xiaomi/sm6150/init/version.c:9:
./include/generated/compile.h:7:24: warning: missing terminating '"' character [-Winvalid-pp-token]
#define LINUX_COMPILER "Android (6877366 based on r383902b1) clang version 11.0.2 (https://android.googlesource.com/toolchai
n/llvm-project b397f81060ce6d701042b782172ed13bee898b79)
^
./include/generated/compile.h:8:1: error: unknown type name 'Found'
Found CUDA installation: /usr/local/cuda, version 7.0, GNU ld (binutils-2.27-bd24d23f) 2.27.0.20170315"
^
./include/generated/compile.h:8:11: error: expected ';' after top level declarator
Found CUDA installation: /usr/local/cuda, version 7.0, GNU ld (binutils-2.27-bd24d23f) 2.27.0.20170315"
^
;
./include/generated/compile.h:8:103: warning: missing terminating '"' character [-Winvalid-pp-token]
Found CUDA installation: /usr/local/cuda, version 7.0, GNU ld (binutils-2.27-bd24d23f) 2.27.0.20170315"
^
In file included from ../../../../../../kernel/xiaomi/sm6150/init/version.c:10:
In file included from ../../../../../../kernel/xiaomi/sm6150/include/linux/module.h:9:
In file included from ../../../../../../kernel/xiaomi/sm6150/include/linux/list.h:5:
../../../../../../kernel/xiaomi/sm6150/include/linux/types.h:102:10: error: unknown type name '__s8'; did you mean '__u8'?
typedef __s8 int8_t;
^~~~
__u8
../../../../../../kernel/xiaomi/sm6150/include/uapi/asm-generic/int-ll64.h:21:23: note: '__u8' declared here
typedef unsigned char __u8;
^
../../../../../../kernel/xiaomi/sm6150/init/version.c:46:26: error: expected ';' after top level declarator
LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n";
^
;
../../../../../../kernel/xiaomi/sm6150/init/version.c:51:6: error: expected ';' after top level declarator
" (" LINUX_COMPILER ") %s\n";
^
;
2 warnings and 5 errors generated.
make[2]: *** [/home/wvthoog/android/pixel-experience/kernel/xiaomi/sm6150/scripts/Makefile.build:361: init/version.o] Error
1
make[2]: *** Waiting for unfinished jobs....
Like i said before, it looks like there are some syntax errors somewhere in one of the sourcefiles but at this point have no clue which files to edit to remedy this error.
Also, if i compile the same ROM for my Redmi Note 10 Pro (sweet) on another VM (Ubuntu 20.04) without a Nvidia GPU the build succeeds .
This sounds like a bug somewhere in one of the source files of Pixel Experience. Tried filing an issue on their Github page but their bot is fairly aggressive in closing issues if they don't meet their posting requirements.
So my question drills down to.... do other experience the same problem when using CUDA during the build process of Pixel Experience and possibly have a solution ?
Secondly, is there an option to disable CUDA during the build process ?
Thanks
Click to expand...
Click to collapse
Face the same problem, How did you solved the error?
Ended up removing the Cuda Toolkit altogether since i couldn't find a solution.
populus_ said:
Ended up removing the Cuda Toolkit altogether since i couldn't find a solution.
Click to expand...
Click to collapse
Hi populus_:
Have you tried to disable the cuda toolkit detection when compiling the rom? Just romving the cuda tookit may be not a pretty solution. besuase i have install multi cuda tookit.
That was my initial question. How do i disable CUDA from building a ROM. Haven't found an answer yet.
I'm trying to build an android kernel. On every build I get a few errors:
/usr/bin/as: unrecognized option '-EL' clang-16: error: assembler command failed with exit code 1 (use -v to see invocation)
warning: field 'cgrp' with variable sized type 'struct cgroup' not at the end of a struct or class is a GNU extension [-Wgnu-variable-sized-type-not-at-end] struct group cgrp;
warning: unused function 'dump_workqueue' [-Wunused-function] static void dump_workqueue(void) {}
I've already tried a lot. No more ideas and information on the Internet. Please help me how to solve this.
I use clang-r475365b, gcc android-11.0.0_r48 and linux mint for building.
My Kernel: https://github.com/OnePlusOSS/android_kernel_oneplus_sm8250/tree/oneplus/SM8250_R_11.0
I will add my build script (.sh) and full log to the files.
I took it from here, but the solution presented there did not help
Thanks for any help!