Android Native Linux compiling - G1 Android Development

I'm not sure if this is the right forum, but XDA is really the only place I can figure to ask.
I've been looking for a way to compile linux applications to run on the command line, for instance nano or lynx. I've found the "agcc hello.c -o hello
" method, but the builds I'm trying for are defendant on ./configure.
I've got a working toolchain, and can even compile android itself, and I've got agcc working. I just can't figure out how to get them all working together.
Any help?

In the ./configure, you need to point it to your compiler (i.e. "agcc").
Try "./configure --help" to see the options it is looking for to make this configuration.

I think you have to set up an arm-eabi cross compiler.

You can try the android native development kit:
http://developer.android.com/sdk/ndk/1.5_r1/index.html
I think this is designed to make native components for the normal dalvik android apps, but it may have useful information.

maxisma said:
I think you have to set up an arm-eabi cross compiler.
Click to expand...
Click to collapse
He did.... agcc is a script that runs it.

RoboPhred said:
You can try the android native development kit:
http://developer.android.com/sdk/ndk/1.5_r1/index.html
I think this is designed to make native components for the normal dalvik android apps, but it may have useful information.
Click to expand...
Click to collapse
NDK creates libraries that can be called from within native apps (i.e. shared objects). It does not create native executables.

This should help?
http://forum.xda-developers.com/showthread.php?t=431329

I've made a wee bit of progress.
My current set up is this:
Step 1: Download this
Step 2: Push it to /system/sd/usr
Step 3: Remount system AND root partitions, then symlink /system/sd/usr to /usr. Then, mkdir /tmp.
Step 4: Push sources to /system/sd. Change working directory to your extracted source file, then run ./configure --host=armv6l-unknown-linux-gnueabi --with-build-cc=/bin/gcc
Step 5: ????
Step 6: Profit
I'm still working out the bugs here, and I'll report back when I've got something working. Currently, I'm trying to compile GNU Make for Android.

check the apps section i think i rememeber somone already compiling nano for android...
i wanted to compile sshfs but then again there is a lot of things i wanna do... LOL

Related

Recompile and overwrite applications in system/app

As an experiment I am trying to rebuild some standard android applications and replace them in system/app on the G1. I have been through all the steps to get the source code and build for the dream platform and have built the various .apk files of interest (e.g. AlarmClock.apk, Browser.apk etc)
To put the files on the device I delete the old .apk and .odex files and copy my newly built .apk file on to the device. However when I try to run the application it crashes with the following message.
The application Alarm Clock (process com.android.alarmclock) has stopped unexpectedly. Please try again.
I know that replacing the applications like this is possible, because the AutoRotating Browser build works fine when copies over in this manner.
I'm using JF1.31 (RC8)
My initial reaction was that I was not signing the applications properly but having read some posts I think the default built .apk should have the right key already in it.
Another theory I have is that perhaps the applications from the head of the source tree are not compatible with the RC8 (or RC30) Android OS releases. Can anyone tell me how to get the source tree which corresponds to this baseline, I've done some reading around but cannot figure it out. I presume I need to do a repo init -u git://android.git.kernel.org/platofrm/manifest.git -b BASELINE but I can't figure out what BASELINE should be.
Many thanks in advance for any help you can give me!!!
There are some branches in android sources:
master
cupcake
release-1.0
Apps from the first two will not run on default G1, you need to reinstall a whole system. I think by default, following google docs you'll get master. So you need to download a release-1.0 sources.
I may be wrong, but that is what I'm see from my experience.
Thanks for that, I'll get the 1.0 branch downloaded and have a go with that.
Cheers for your help!
I was also trying to recompile some of the built-in apps, specifically the browser, but I can't even get it to build. I get a bunch of import errors, stating that it can't find some of the android libraries, such as android.net.http.AndroidHttpClient, android.os.AsyncTask, etc. I've got the android.jar from the SDK in my build path, and it finds some of them, such as android.webkit.URLUtil.
Can anyone shed some light on what I need to do to get it to see the missing libraries? Thanks.
UndeadCretin said:
Thanks for that, I'll get the 1.0 branch downloaded and have a go with that.
Cheers for your help!
Click to expand...
Click to collapse
There are around a dozen build breaks in release-1.0... all of them are due to missing header #includes in various .c and .h files. So, when it doesn't work, don't give up. Fix the breaks and everything will build properly.
Are you resigning the .apk files? Cuz you have to do that for them to work correctly.
Koush said:
There are around a dozen build breaks in release-1.0... all of them are due to missing header #includes in various .c and .h files. So, when it doesn't work, don't give up. Fix the breaks and everything will build properly.
Click to expand...
Click to collapse
Yep I fixed these problems but I have now hit upon the following problem:
(unknown): error 17: Field android.hardware.SensorManager.LIGHT_NO_MOON has changed value from 0.0010f to 0.001f
******************************
You have tried to change the API from what has been previously released in
an SDK. Please fix the errors listed above.
******************************
I've been in and modified SensorManager back to 0.0010f and that let me build get further but I hit the same error again later in the build.
Given that release-1.0 should be a stable branch is it normal to get all these build issues?
Managed to fix the java issue by modifying public_api.xml. Then hit several more C++ problems which I fixed and finally I can build the lot!
Just tried building the AlarmClock application and running on the G1 and it works fine. Thanks everyone for your help!
>Managed to fix the java issue by modifying public_api.xml. Then hit several more C++ problems which I fixed and finally I can build the lot!
Can you write, what did you fix?
^ Agreed, let us know which files need modifying and what needs doing, i've been trying to get my release-1.0 build root working too!
Alternatively, UndeadCretin, could you build the firmware (release-1.0) with a modified framework-res i can send you?
Ok, I managed to compile it without any editing of xml.
Just added stdlib, string, vector headers to dozen of cpp/h.
worry said:
>Managed to fix the java issue by modifying public_api.xml. Then hit several more C++ problems which I fixed and finally I can build the lot!
Can you write, what did you fix?
Click to expand...
Click to collapse
To fix the java issue, I modified frameworks/base/core/java/android/hardware/SensorManager to change the LIGHT_NO_MOON value to 0.0010f (from 0.001f) and in out/target/common/obj/PACKAGING I modified the <field name="LIGHT_NO_MOON" to have value-"0.0010f">
After this there were several other c++ files which were missing relevant includes. I'm afraid I didn't keep a note of these so cannot provide much detail but mostly they were missing one of the following
#include "stdlib.h"
#include "string.h"
#include "stdio.h"
I think one file needed the following include
#include <string>
and there were a couple of other files that needed other includes. The best way to find these is to google for the function name that isn't building and you should be able to find the appropriate include (that's how I did it).
Hope that helps a bit!
were you able to repo sync after adding the local_manifest.xml?
ximonx said:
were you able to repo sync after adding the local_manifest.xml?
Click to expand...
Click to collapse
I did try that previously but it didn't work. I don't think the relevant files for the dream build are available in the release-1.0 branch. This wasn't a problem for me since I'm only interested in building the applications which work fine with the generic build.
I would like to do the same for the mms application. Could you give me the steps or a link how to do it? I mean do I need the whole sources from android platform to do it? How can I just compile one application?
Phlogiston said:
I would like to do the same for the mms application. Could you give me the steps or a link how to do it? I mean do I need the whole sources from android platform to do it? How can I just compile one application?
Click to expand...
Click to collapse
I downloaded the whole Android source (the release-1.0 branch) and compiled the lot. It may be possible to just build the individual application but I do not know how. It is not vital to build for the dream platform if you only care about the applications since they will work fine with the generic build.
So the basic steps to start are:
Get yourself a Linux or Mac OS platform (I use Ubuntu running in VMWare on my XP box).
Follow the instructions here: http://source.android.com/download but when you come to repo init add the flag -b release-1.0
Fix various build problems
When recompiling individual apps to replace system apps is there a way of just building a single application or does the entire thing need making?
ximonx said:
When recompiling individual apps to replace system apps is there a way of just building a single application or does the entire thing need making?
Click to expand...
Click to collapse
My experience is that you have to do the whole thing if you are building from source. There is one way I know of to get around this, which is to use baksmali and smali.
Just to be clear, making the entire thing = build from source root?
ximonx said:
Just to be clear, making the entire thing = build from source root?
Click to expand...
Click to collapse
If you are asking me--yes, that's what I mean. Make sure to build for dream-open as the target (it's generic by default).

ksplice in android we need developers/hackers

ok this is a simple one ksplice works in perl and perl works in ase.apk/gscripts.
however we need to get a verified working ksplice in our android for another project. as this will benefit other projects on here i made a new post. ideas how-to's and files are welcome i will update first post along with who did what so we all benefit.
Quick correction: GScript only runs shell scripts. Android-Scripting ( http://code.google.com/p/android-scripting/ ) on the other hand allows shell, and has interpreters for Beanshell, Lua, Python, and Perl.
isnt ksplice to project to mod kernel without having to compile or reboot?
That's exactly what it is. We've found a use for the project in the RAM mod, which requires a kernel patch to re-allocate memory from the GPU. What we're hoping is to be able to re-patch this on the fly so that when the GPU needs the memory back we can restore it programmatically without having to reboot the device.

[Q] Source Code Base to build ROMs for SGS4G

Hello All,
I am new to the android platform. So please forgive if this is too trivial a question.
1. How do I obtain source code for a specific platform and a specific phone?
Is it segregated that way?
2. How do I build ROM and package it to deploy on the phone?
Please provide pointers to these and I am willing to go through the documents/literature. Please help.
Thanks in advance!!
Two answers first question go in general section second start here http://forum.xda-developers.com/showthread.php?t=1117554 very good read hope this helps
sent from gingerbread 2.3.3 sgs4g ROOTED
rose2jam said:
Two answers first question go in general section second start here http://forum.xda-developers.com/showthread.php?t=1117554 very good read hope this helps
sent from gingerbread 2.3.3 sgs4g ROOTED
Click to expand...
Click to collapse
Thanks for the quick response! I have been going over that thread quite extensively but I can't seem to locate threads for
1. How to get the source code for the instrument( SGS4G) ?
2. How to build a complete ROM which is flashable? Basically, How to package it for deployment, like the other developers do on this forum.
androcton said:
Thanks for the quick response! I have been going over that thread quite extensively but I can't seem to locate threads for
1. How to get the source code for the instrument( SGS4G) ?
2. How to build a complete ROM which is flashable? Basically, How to package it for deployment, like the other developers do on this forum.
Click to expand...
Click to collapse
You didn't post in the right section, this needs to go in the general section.
You'll need to download the phone's source:
https://opensource.samsung.com/reception/reception_main.do?method=reception_search&searchValue=t959v
You should grab both files there. You'll need to build this on Linux or anything that has G++ for ARM.
FBis251 said:
You didn't post in the right section, this needs to go in the general section.
You'll need to download the phone's source:
https://opensource.samsung.com/reception/reception_main.do?method=reception_search&searchValue=t959v
You should grab both files there. You'll need to build this on Linux or anything that has G++ for ARM.
Click to expand...
Click to collapse
Thank you so much! I am already onto it!
Moved to proper forum.
androcton said:
Thank you so much! I am already onto it!
Click to expand...
Click to collapse
Did you ever get it working? I also found Dr. Honk's public git here:
https://github.com/drhonk/android_device_samsung_sgs4g
You can see the source for the Bali kernel here:
https://github.com/drhonk/Bali-V4G
Tell me how it goes.
FBis251,
Thanks for the resources! Currently I am still trying to get my dev-env setup properly, somehow have some installation/setup issues with the GNU/LINUX ARM toolchain. Meanwhile, I could build the kernel from the android base from source.android.com.
I have the system.img and other files in the out directory. The build went through but with lot of warnings. Here is the buildlog. Please let me know if something is amiss. Thanks!
Assuming the build went fine, I am not quite sure how to load that onto the device. I am trying to run an emulator though....will get back on that.
androcton said:
FBis251,
Thanks for the resources! Currently I am still trying to get my dev-env setup properly, somehow have some installation/setup issues with the GNU/LINUX ARM toolchain. Meanwhile, I could build the kernel from the android base from source.android.com.
I have the system.img and other files in the out directory. The build went through but with lot of warnings. Here is the buildlog. Please let me know if something is amiss. Thanks!
Assuming the build went fine, I am not quite sure how to load that onto the device. I am trying to run an emulator though....will get back on that.
Click to expand...
Click to collapse
Have you tried looking at:
http://source.android.com/source/building.html
Apparently you can just flash the image you just made... Try to see if you can open the .img as a .tar...?
I'm having trouble compling the bali kernel... I'll try again tomorrow.
FBis251 said:
Have you tried looking at:
http://source.android.com/source/building.html
Apparently you can just flash the image you just made... Try to see if you can open the .img as a .tar...?
I'm having trouble compling the bali kernel... I'll try again tomorrow.
Click to expand...
Click to collapse
Hi FBis251,
Can you please tell me how did you go about setting up the dev-env(the cross compiling toolchains). Are you using linux( which flavor, I am using Ubuntu 11.04 Natty Narwhal). I have some problems setting up the toolchains...as mentioned in the below link
https://opensource.samsung.com/recep...rchValue=t959v
Any ideas??
The readme from the opensource site says:
Code:
HOW TO BUILD KERNEL
1. Visit http://www.codesourcery.com/, download and install Sourcery G++ Lite 2009q3-68 toolchain for ARM EABI.
2. Extract kernel source and move into the top directory.
3. Execute 'make vibrantplus_rev00_defconfig'.
4. Execute 'make' or 'make -j<n>' where '<n>' is the number of multiple jobs to be invoked simultaneously.
I just googled thw 2009q3-68 version since I couldn't find it on the site after signing up and came across this:
http://www.codesourcery.com/sgpp/lite/arm/portal/release1033
I actually haven't gotten the kernel to compile without errors yet, and I haven't tried building the platform source until later today. You'll have to modify the makefile, look for the variable called CrossCompile and set it to the main /bin folder from the CodeSourcery toolchain.
Should be something like
Code:
CROSS_COMPILE ?= /home/user/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-eabi-
I'll give you more details later, I'm still learning as I go too.
Also, something I came across to speed things up when you do the make, apparently if you have a quadcore processor, you can use make -j 8 (or just multiply however many cores you have by 2) and the compile should run as fast as possible.
Keep me posted.
FBis251 said:
The readme from the opensource site says:
Code:
HOW TO BUILD KERNEL
1. Visit http://www.codesourcery.com/, download and install Sourcery G++ Lite 2009q3-68 toolchain for ARM EABI.
2. Extract kernel source and move into the top directory.
3. Execute 'make vibrantplus_rev00_defconfig'.
4. Execute 'make' or 'make -j<n>' where '<n>' is the number of multiple jobs to be invoked simultaneously.
I just googled thw 2009q3-68 version since I couldn't find it on the site after signing up and came across this:
http://www.codesourcery.com/sgpp/lite/arm/portal/release1033
I actually haven't gotten the kernel to compile without errors yet, and I haven't tried building the platform source until later today. You'll have to modify the makefile, look for the variable called CrossCompile and set it to the main /bin folder from the CodeSourcery toolchain.
Should be something like
Code:
CROSS_COMPILE ?= /home/user/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-eabi-
I'll give you more details later, I'm still learning as I go too.
Also, something I came across to speed things up when you do the make, apparently if you have a quadcore processor, you can use make -j 8 (or just multiply however many cores you have by 2) and the compile should run as fast as possible.
Keep me posted.
Click to expand...
Click to collapse
I followed the procedure mentioned in that readme file, but with additional info from other site,,
I extracted the source code from samsung open source, and then used the toolchain from the android base and it looked like it built(lot of warnings), but i cant find zImage anywhere?Wondering what ever happened during the build,,,
command used: make -j4 ARCH=arm CROSS_COMPILE=/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- zImage
Build abruptly end, no build logs anything, see file for build output.
Is there anything that I am missing?, Please help!
And, Don't you think the build log is unusually small for a kernel build?? :O
androcton said:
I followed the procedure mentioned in that readme file, but with additional info from other site,,
I extracted the source code from samsung open source, and then used the toolchain from the android base and it looked like it built(lot of warnings), but i cant find zImage anywhere?Wondering what ever happened during the build,,,
command used: make -j4 ARCH=arm CROSS_COMPILE=/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- zImage
Build abruptly end, no build logs anything, see file for build output.
Is there anything that I am missing?, Please help!
And, Don't you think the build log is unusually small for a kernel build?? :O
Click to expand...
Click to collapse
Folks on the forum, any ideas, the open source code from samsung sure looks like it has built all the '.o's but abruptly stop without even a warning as to what is wrong? Please help. Thanks in advance!
androcton said:
Folks on the forum, any ideas, the open source code from samsung sure looks like it has built all the '.o's but abruptly stop without even a warning as to what is wrong? Please help. Thanks in advance!
Click to expand...
Click to collapse
Okay, I got the kernel to compile after getting rid of the
1. "error: 'SEGMENT_SIZE' undeclared" problem, I had to turn on the Make V=1 ( verbose mode) explicitly to get to this point.
2. Next the compilation stopped saying "make[3]: *** No rule to make target `net/ipv4/netfilter/ipt_ecn.o', needed by `net/ipv4/netfilter/built-in.o'."
I had to remove the netfilter support from the kernel. I REALLY did not know how to solve this problem. Now that I have built the zImage( really small compared to the zImage that gets posted around in the forum) I am now concentrating on how get netfilter back into the kernel, for it is an important module for anything to do with TCP/IP security n filtering.
Finally,
3. How do I package this to the phone as a complete bootable ROM? Please help! Thanks in advance!
I found this thread, it might be useful. I can't try it until later though.
http://forum.xda-developers.com/showthread.php?t=704561

[Q] Help on Compiling a Custom Kernel for Better Security

Hi everyone,
This is my first time posting but I've hung around the forums for a while now. I've started a project to add more strict security controls to the Android platform. Sure, we have permissions that a user must accept in order to install an application, but that isn't enough.
A good place to start would be to enable some of the security functionality back into the Linux kernel (Linux security modules). I have been doing my homework and know what challenges need to be over come yet I am running into great difficulty just getting the kernel to compile the way I want.
Since security modules have been disabled in the kernel itself, the kernel needs to be re-configured and re-compiled with the features enabled. I am working with the Nexus S kernel source code directly from Google using git (specifically the kernel/samsung.git project). When I get it I use the make ARCH=arm herring_defconfig to generate the .config file. I have found out (the hard way) that if the .config file isn't set up correctly, the compilation errors are endless.
But anyway, once the .config file is generated, I want to go into and enable the configurations I need. I do so, save, and exit. As soon as I go to make the kernel and compile the entire thing, it overwrites my edited version of .config and compiles it the way it wants to.
Anyone now a way around this?
Edit:
Solved the problem. Found a way around it using a make ARCH=arm menuconfig. Should have known...

[Q] Motorola Xoom Rooted Gcc [SOLVED]

Hey all,
So here's what I've got / am thinking. I have a rooted Motorola Xoom 3g model, and I can access the command line. Now, I realize that Apps can only be written in / run with Java in the Dalvik VM. What I fail to understand is, that things like busybox, and even Backtrack 5 has an "arm" version that you can easily install side by side with Honeycomb. So, what I'm trying to figure out is, how can I (or why can I not) write apps in C or C++ that are system based daemon's, that are Not Apps per se for the honeycomb system, but simple *nix based programs?
So, I didn't see a good way to mark this thread as solved, but I figured it out. You need to use an ARM cross-compiler (gcc/g++ has one, or you can use Code Sourcery's compiler, which I did). It was a breeze to build a simple program on my *nix box, compile it with that (arm-none-linux-gnueabi-gcc -static hello.c -o hello) and adb push it to the Xoom!
sovereign_313 said:
So, I didn't see a good way to mark this thread as solved, but I figured it out. You need to use an ARM cross-compiler (gcc/g++ has one, or you can use Code Sourcery's compiler, which I did). It was a breeze to build a simple program on my *nix box, compile it with that (arm-none-linux-gnueabi-gcc -static hello.c -o hello) and adb push it to the Xoom!
Click to expand...
Click to collapse
The way to mark a thread as [SOLVED] is to edit the first post in advanced mode and change the title.

Categories

Resources