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?
Hi,
I have downloaded the s2 kernel from github GalaxySII/samsung-kernel-galaxysii and can successfully compile with the Sourcery toolchain.
I want to compile wpa_supplicant 0.6 so that I can use the client (wpa_cli) on my phone. I have downloaded the source from the AOSP repository android-git-kernel-org/platform/external/wpa_supplicant_6
So I now have the source in directory called "external/wpa_supplicant_6" in the root directory of my s2 kernel source.
The .config file looks OK and I have edited Android.mk in external/wpa_supplicant_6/wpa_supplicant so that it contains the line:
WPA_BUILD_SUPPLICANT := true
In directory external/wpa_supplicant_6/wpa_supplicant I type "make" and get lots of errors about undeclared variables.
Can anyone suggest what my error is?
Thanks,
NT
I know that is a very old post, but is a good question.
I'm interested to build wpa_supplicant v2.3 and 2.1 without to rebuild the entire android os.
But, like you i've a huge amount of problems.
Hello,
I am trying to build the faux123 Atrix 4g CM_kernel from source and run it on my device. I have been able to load the pre-compiled zImage and ramdisk on my atrix without any problems, but when I try to load the zImage I compiled the system never boots. The screen stays locked on the fastboot message without ever advancing.
I am using the code sorcery toolchain and I compiled the kernel with the tegra_olympus_cyanogenmod_defconfig configuration and I grabbed the latest version of the CM_kernel branch from faux123's github repository.
Part of the difficulty is that the system never gets to a point where it can output information, so I have no idea how far it is making it in the boot sequence.
Any help debugging this is appreciated.
I got it to work. I changed to the android ndk toolchain (android-ndk-r6) for my cross compiler and it worked. Here is what I did:
$ make ARCH=arm tegra_olympus_cyanogenmod_defconfig
$ make ARCH=arm CROSS_COMPILE=/home/kingst/NVPACK/android-ndk-r6/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi- -j20
the -j20 tells the compiler to use 20 jobs (rule of thumb -- use #cpu*2 for this) and the CROSS_COMPILE parameter tells kbuild the prefix of my cross compiler.
I did have to change a few things to get it to work, I will submit a patch to the faux123 kernel for the change
Update: if you use the arm-2010.09 toochain from code sourcery then you can compile the faux123 CM_kernel without any modifications. This is the toolchain being used for official builds, so it is the best one to use.
So I decided to lean how to build AOKP from source. I referenced other developers Github's and multiple tutorials. I finally manged to create a good device and vendor tree and successfully build AOKP from source. All is good, or so I thought. When I attempted to perform my first CWM backup, I was prompted (at the end) with the error message "MD5 error". Looking into the recovery log shows that the script nandroid-md5.sh was not found.
So, I check my build output, "out/target/product/i777/recovery/root/sbin" and discover that the script is missing. Next I start to dig into the bootable/recovery project. I evaluate the Android.mk file and I find the following:
Code:
include $(CLEAR_VARS)
LOCAL_MODULE := nandroid-md5.sh
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin
LOCAL_SRC_FILES := nandroid-md5.sh
include $(BUILD_PREBUILT)
So the make file should include the script in the build, but I can't figure out what is missing. I've done the following without success.
Rebuilt with an earlier version (6.0.1.5) of CWM recovery.
Evaluated other devices to see if I'm missing something in my device/vendor trees.
Checked AOKP & CM forums for anyone reporting similar issues.
Built a supported device i9100 and the same problem occurs.
Now, I've found a workaround, but it seems more like a hack. If I include the following line in one of my make files, then the file will get copied.
Code:
PRODUCT_COPY_FILES += \
bootable/recovery/nandroid-md5.sh:recovery/root/sbin/nandroid-md5.sh
I'm hoping that someone can help me understand why my build is having this problem.
Hi All.
I am trying to compile an excutable for Android JB. the executable uses (in the sources and Android.mk file) libncurses.
But there is not ncurses nor libncurses in the tree, only in prebuilts/gcc/linux-x86/....glibc-2.7-4.6/sysroot/usr/lib/libncurses.so
What should i do??
Thanks