Compile native C application (i.e. wireless-tools) - Android Software/Hacking General [Developers Only]

Hi,
I'm trying to compile a linux library for using it in my Nexus S, but I'm not able to cross-compile it (libconfuse).
I have to run the ./configure but I don't know how to include the android toolchain, include and libs.
Anybody can give me a hint on how to do so?
TA
Edit:
I forgot to mention that I have already compile a helloworld using agcc and the toolchain, but this is far more complicated

Related

[DEV][TUTORIAL]Compile your own kernel from Samsung Sources! *Newbie Friendly*

Ok,let's start with kernel first....
I want this guide to be n00b friendly...so lets start!
1)Install Ubuntu 10.10 or later(virtual distro may work too!)......Ubuntu coz its easy for beginners....This guide should work on Fedora distros,but u will need to download separate packages.
Use this for samsung devices:
Code:
SUBSYSTEM=="usb", SYSFS{idVendor}=="04e8", MODE="0666"
2)Download the source code from opensource.samsung.com
3)Open terminal and download the the necessary tools:
For 32/64 bitsi use this)
Code:
apt-get install git-core gnupg sun-java6-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
For 64 bits ONLY:
Code:
ia32-libs lib32z1-dev lib32ncurses5-dev gcc-multilib g++-multilib
4)Download the code soucery toochain:Toolchain
Note:This is an old toolchain.u may/should use a newer one...(optional)
ur machine is good to GO!
Ok,so i assume u have set up your machine
Now,all of the files should be placed in ~/Downloads (for my convinience to explain!but u may put it anywhere)
extract the sources and everything else u downloaded....then go into the top directory
Code:
cd Kernel
u enter into the root of the kernel directory with this
then type :
Code:
gedit Makefile
The Make file will open.........look out for this and change CROSS_COMPILE= "your toolchain path"
EXAMPLE:
Code:
CROSS_COMPILE ?= /home/sarthak/Downloads/Toolchains/arm-eabi-4.4.3/bin/arm-eabi-
This will open up the Makefile in a gedit,and the changed values will correspond to wherever u placed your toolchain................the EXTRAVERSION refers to current sub-version of your linux kernel version on ur phone
Get the config from your phone..Type:
Code:
adb pull /proc/config.gz
This will fetch a working config from the current kernel on your phone....u can alternatively make a new one with "make menuconfig"
Then gunzip it and copy it to to ur kernel source root:
Code:
gunzip config.gz
rename to .config
Now,make the necessary changes in your source.When you are done,type:
Code:
make -jX
,where X=no.op cpu threads multiplied by 1 or 2.
Sit down and have a smoke!
The resulting kernel will be in Kernel/arch/arm/boot/zImage
MORE COMING SOON!guide unfinished
reserved..................
last one!!!!!1
sakindia123 said:
last one!!!!!1
Click to expand...
Click to collapse
Sir why dont you create yourself a good Powerfull kernel for us please.............Thanks in advance
rohit589769 said:
Sir why dont you create yourself a good Powerfull kernel for us please.............Thanks in advance
Click to expand...
Click to collapse
Respect bro.
@Saki* you have any links for other toolchain compiler.
Sent from my LG-P920 using xda premium
Will this work with virtualbox as well?
bumslayer said:
Will this work with virtualbox as well?
Click to expand...
Click to collapse
yap but i think it requires a different set-up
cool sir saki
i think ill wait until i get my Comp.
we're using win7 Ult. pretty dumb =="
btw, can i be ran in Fedora?
mtvtitan said:
Respect bro.
@Saki* you have any links for other toolchain compiler.
Sent from my LG-P920 using xda premium
Click to expand...
Click to collapse
u can pick arm toolchains from Codesoucery site(google it)..
i personally use 2011.03
@bumslayer-yes it will work,but it will be slower
sakindia whats the point for this?you also try it but didnt work on flashing.so why to create unusable kernels?
sakindia123 said:
u can pick arm toolchains from Codesoucery site(google it)..
i personally use 2011.03
@bumslayer-yes it will work,but it will be slower
Click to expand...
Click to collapse
ok googling............
thanks anyway..........
bumslayer said:
Will this work with virtualbox as well?
Click to expand...
Click to collapse
sakindia123 said:
@bumslayer-yes it will work,but it will be slower
Click to expand...
Click to collapse
novaday's virtual machines does not have significant overhead, so performance degradation is negligible. Go ahead, using vm is a good choice!
Me personally using Ubuntu inside a Microsoft Virtual PC (sometimes Oracle VM VirtualBox). My suggestion is not to use the virtual machines virtual desktop it's a bit laggy, but telnet or ssh into the virtual machine, you feel more convenient.
The only drawback, than you don't have direct USB connection to the phone. You have to transfer the files between the Linux and the phone using the host OS (eg Windows).
Doky73 said:
The only drawback, than you don't have direct USB connection to the phone. You have to transfer the files between the Linux and the phone using the host OS (eg Windows).
Click to expand...
Click to collapse
I wonder whether USB support would be sufficient in VirtualBox to support the SDK. some USB devices work quite well in a VM.
But i didnt understand what is use of compiling kernel?
Kernel Compiling is not easy task like making ROM.
1st you have to understand linux enverioment
2nd you have to make Android Enverioment in linux enverioment
3rd you have to sound knowledge of C
4th you have to know how to patch kernel
5th you have to be ready to brick phone (atleast your)
so better is leave kernel stuff to a developer who understand this and enjoy either stock kernel or patched kernel which developer release frequently.
I suggessing dont go for kernel compiling if you didnt know what it is.
sajidmkhan said:
But i didnt understand what is use of compiling kernel?
Kernel Compiling is not easy task like making ROM.
1st you have to understand linux enverioment
2nd you have to make Android Enverioment in linux enverioment
3rd you have to sound knowledge of C
4th you have to know how to patch kernel
5th you have to be ready to brick phone (atleast your)
so better is leave kernel stuff to a developer who understand this and enjoy either stock kernel or patched kernel which developer release frequently.
I suggessing dont go for kernel compiling if you didnt know what it is.
Click to expand...
Click to collapse
Very well said..
i've seen many people who know the stuff but are not familiar how it works with android.....
sakindia123 said:
i've seen many people who know the stuff but are not familiar how it works with android.....
Click to expand...
Click to collapse
actually i agree w/ saki. i've visited ace's and htc evo 4g. some ppl dunno how those linux things works but thy have compiled a kernel =="
We must learn ,sudnt leave the responsibility to only a few.Also I think kernel can be ported?
premolikeshtc said:
We must learn ,sudnt leave the responsibility to only a few.Also I think kernel can be ported?
Click to expand...
Click to collapse
135MB Size of Kernel Source
2693 Directory
35492 Files
This is exact situation of 5360 Galaxy Y Kernel source which you have to mod and compile.
dude Start learning from now
---------- Post added at 06:35 AM ---------- Previous post was at 06:34 AM ----------
musashihatred said:
actually i agree w/ saki. i've visited ace's and htc evo 4g. some ppl dunno how those linux things works but thy have compiled a kernel =="
Click to expand...
Click to collapse
compile didnt take anything its just one command.
Important is patching kernel cuz without patching output will be worst then stock kernel
YEah,someone with zero knowledge wouldn't dabble into the source.....Tis guide is just a simple tut to set up the environment and compile stock zImage.

[Q] CM11 LG P700 to cr3pt

Hi,
New to building Android and want to build the code by cr3pt for the p700.
I have check out the base CM 11 code but I am guessing there is additional code by cr3pt to build the LG 7 p700 parts. Are these available to download and if so where?
I am assuming, and I could be wrong, that either the additional code is independant of the base code or the two can be merged. I have never used GIT so it is all a bit new but I am sure it will be no harder than svn (probably easier).
Any howtos gratefully received.
Thanks,
bibble_235 said:
Hi,
New to building Android and want to build the code by cr3pt for the p700.
I have check out the base CM 11 code but I am guessing there is additional code by cr3pt to build the LG 7 p700 parts. Are these available to download and if so where?
I am assuming, and I could be wrong, that either the additional code is independant of the base code or the two can be merged. I have never used GIT so it is all a bit new but I am sure it will be no harder than svn (probably easier).
Any howtos gratefully received.
Thanks,
Click to expand...
Click to collapse
You can check out xda university.
But the basics are a kernel that works, correct libs for accessing your devices hardware, and using logcat/dmesg/strace to debug everything else.
I have never used git either, but kgit is a nice kde gui for git.
You should look around for tutorial's on git. (There has got to be one.)
Lgrootnoob said:
You can check out xda university.
But the basics are a kernel that works, correct libs for accessing your devices hardware, and using logcat/dmesg/strace to debug everything else.
I have never used git either, but kgit is a nice kde gui for git.
You should look around for tutorial's on git. (There has got to be one.)
Click to expand...
Click to collapse
Thanks this is a fine place to start.
Good place to start indeed. Sound like all I need to do is change
lunch cm_i9100-userdebug
to
lunch cm_p700-userdebug
I wouldn't know. Im not a rom dev. But I do know that for testing builds, the userdebug will have adb and everything ready.
So you got that right.
Anyways, you can use the tool in my signature to help debug your rom.
It has strace, auto logcat capture, and is about to add auto dmesg but you can do that by typing.
Code:
adb shell dmesg | more
or for output to notepad
Code:
(adb shell dmesg > dmesgout.txt)&(notepad dmesgout.txt)
Just not in linux though.
If you plan on becoming a rom dev full on, then you can link to my post and have your windows users collect logcats with my tool (For eaasy debugging) and upload the txt file output.
Code:
lgctnp
Well lunch did not work. Guessing the p700 code is not on the cm11 branch
Sent from my GT-N8013 using Tapatalk
bibble_235 said:
Well lunch did not work. Guessing the p700 code is not on the cm11 branch
Sent from my GT-N8013 using Tapatalk
Click to expand...
Click to collapse
This is what I want I think, I case others find my thread.
http://forum.xda-developers.com/showthread.php?t=2329641

Compiling source with .mk files help

I have compiled java based source code into APKs. Either with gradlew or ant. I cannot however figure out how to compile aosp based source. Like their keyboard has no manifest. Just a dot mk file. I have little experience with cross compilation. I CCd one c program I wrote with the NDK and cmake. Is there a special procedure or do I compile with the ndk? Ive seen lunch thrown around in forums. Can someone help me out please?
What are you trying to compile? AOSP source to build a ROM? Individual AOSP app?
Elluel said:
What are you trying to compile? AOSP source to build a ROM? Individual AOSP app?
Click to expand...
Click to collapse
Individual AOSP app. The keyboard.
codecaine21 said:
Individual AOSP app. The keyboard.
Click to expand...
Click to collapse
http://xda-university.com/as-a-developer/downloadcompile-specific-rom-parts
Elluel said:
http://xda-university.com/as-a-developer/downloadcompile-specific-rom-parts
Click to expand...
Click to collapse
Thank you

[REFERENCE] [3.10.105] Stock kernel with upstream Linux patches - May 9th

Introduction
Hello all, I am bringing you this thread as a jumping off point to compiling kernels and working with upstream Linux. I will include a guide, some links, and some terms that will help you get started with modifying kernel source. This is also a good reference point for existing developers as I have consolidated all upstream patches into one repo. Let's get down into it!
What in the world is upstream Linux?
When an OEM sets up a device, they will pick a stable longterm branch from the Linux kernel to base their modifications around (drivers and such). In the case of Bullhead, they picked 3.10.73. Currently, the Linux kernel's 3.10 is updated to 3.10.105, as you can see on kernel.org. This means that Google is "missing" versions 3.10.74 to 3.10.105. Now, why does this matter? Well, the way that the Linux kernel runs its stable branches, the only things that get merged into there are bug fixes and security updates. That's it, there are no wonky features or unstable patches. The only way you get a patch into a stable branch is by having it be in the mainline branch first. Some developers have an aversion to adding upstream because they claim it is excessive and not necessary and they are partially right since not all the patches that come in are relevant to our architecture (arm64). However, upstream Linux is not unstable and by adding each version one at a time, you can verify this. I found only two patches between 3.10.73 and 3.10.105 that gave me issues and it is easy enough to either fix/revert them. Being up to date is good since you keep yourself protected from bugs and security issues that crop up. Google has been better about doing this lately with their monthly security updates but it never hurts to take matters into your own hands.
I suggest watching one of these talks given by Greg Kroah-Hartman, it is really interesting to see how the process goes:
https://www.youtube.com/watch?v=SPY0LyTU53w | https://www.youtube.com/watch?v=L2SED6sewRw
What did you do?
All I did was fetch the latest kernel.org patches from here and cherry pick them on top of the latest kernel source from Google.
I merge these patches by cherry-picking each version individually (3.10.73 to 3.10.74, 3.10.74 to 3.10.75, etc), that way I can verify that the kernel compiles fine and that there are no merge conflicts. Google will sometimes pick certain commits from upstream that are of a higher importance than others which can result in conflicts if you try to pick it again. Additionally, upstream might fix a bug one way and Google has done it another (which is not really good, Google should be pushing their fixes back to upstream so everything stays in sync).
What do I do with this?
I have created two repos below: one with the latest N security update branch with the latest upstream patches picked up on top of it (the bullhead-upstream branch) and another one with a plain AnyKernel source for you to modify (bullhead-stock is the most basic, bullhead-decrypt contains an fstab file that will disable both forced encryption and dm-verity). You are free to fork these or base other branches on them, that's the whole point of this post. I have verified that all the patches contain no major detectable issues. I would like some credit if you do use it but it's not required since the kernel is licensed under GPL Another reason I offer this is I have seen a lot of developers picking in upstream in patch sets, so you get one single commit for an upstream version. This is detrimental as you start to add your own patches as you cannot fully tell what was modified and for what reason without the individual commits. It might look cleaner but you don't get full history which hurts you in the long run.
Links
Kernel source: https://github.com/nathanchance/bullhead/tree/upstream-7.1.2
AnyKernel source: https://github.com/nathanchance/AnyKernel2/tree/bullhead-stock-decrypt
Toolchain source: https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/
How to compile
This will be a quick, step by step guide on how to compile this kernel from source. By using this process, you can start to make modifications to the kernel source and make a flashable zip.
Clone the kernel source, the AnyKernel source, and toolchain source
Code:
cd ~
mkdir Kernel && cd Kernel
git clone https://github.com/nathanchance/bullhead.git source
git clone https://github.com/nathanchance/AnyKernel2.git anykernel
git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9 AOSP-4.9
Explanation:
First command: make sure you are in your home directory (or whatever directory you want to hold the kernel folder we are about to make.
Second command: make a Kernel folder and move into it
Third command: clone the kernel source from my repo into a folder named source
Fourth command: clone the AnyKernel source from my repo into a folder named anykernel
Fifth command: clone the Google 4.9 toolchain into a folder named AOSP-4.9
AnyKernel is the name of the zip we are going to make which allows the kernel to be flashed over any ROM.
A toolchain is a set of compiler tools that allow us to compile the kernel on any computer architecture.
Make sure you are on the correct branches
Code:
cd source && git checkout upstream-7.1.2
cd ../anykernel && git checkout bullhead-stock-decrypt
Explanation:
First command: move into the source directory and checkout the branch "upstream-7.1.2", which has all of the necessary patches in it.
Second command: move into the AnyKernel directory and checkout the branch "bullhead-decrypt". If you don't want to disable forced encryption, use the "bullhead-stock" branch.
Tell the compiler what you are are compiling
Code:
export CROSS_COMPILE=${HOME}/Kernel/AOSP-4.9/bin/aarch64-linux-android-
export ARCH=arm64 && export SUBARCH=arm64
make clean && make mrproper
make bullhead_defconfig
Explanation:
First command: point the compiler to the location of your toolchain. If you have done anything different with the folder locations, you will need to modify the "${HOME}/Kernel/AOSP-4.9" part.
Second command: tell the compiler which architecture we are compiling for. In this case, our device is an arm64 device.
Third command: clean out any compiled files and remove our previous defconfig.
Fourth command: tell the compiler which options we want in the kernel using the bullhead_defconfig.
A defconfig is a file that will tell the compiler which features we want in the kernel. No computer ever uses all of the options in the kernel since there are different drivers for various devices.
Make the kernel!
Code:
make -j$(nproc --all)
Explanation:
make tells the compiler to make the kernel (duh) and the -j$(nproc --all) tells the compiler to use the maximum number of cores your computer has available
Make the AnyKernel zip
Code:
cp -v arch/arm64/boot/Image.gz-dtb ../anykernel/zImage-dtb
cd ../anykernel
zip -r9 stock-upstream.zip * -x README stock-upstream.zip
Explanation:
First command: copies the completed kernel (Image.gz-dtb) into the AnyKernel folder
Second command: moves us into the AnyKernel folder
Third command: makes the zip file (named stock-upstream.zip) in the AnyKernel folder.
If you ever want to do this again, run these commands and go straight to step 3:
Code:
cd source && git clean -fxd && git pull
cd anykernel && git clean -fxd && git pull
NOTE: This thread is aimed to be a breeding ground for kernel development, a place to jump off if you will. I am happy to answer how to questions about building kernels or flashing the one I have provided but this is not supposed to be a general Q&A thread. Please use another thread or create your own in Q&A if you need assistance.
THIS. This is what I've been looking for ever since I bought and rooted my bullhead: an optimized stock kernel. I hope and pray that upstream patches are just the beginning, and later on, you'll have the time and inclination to add more optimizations. I don't care for other features. Just a kernel that works and performs is fine with me. If ever you need a tester for future builds, just give me a shout out and I'll be happy to assist. Thanks for sharing your work, mate.
I'd like to respectfully make a request. Talking a look at your Flash kernel thread and I found the optimizations I was referring to in my post above, namely:
Upstream Linux versions 3.10.74-3.10.103
Updated to the October security patch
Patches for some CVEs
Upstream patches from CAF and Linux
Compiled with the Linaro 6.2 toolchain, compiled regularly from Uber's source?*here
Makefile optimizations
Forced encryption and dm-verity disabled
If you can add these to the stock kernel, I'm pretty sure you'll find a user base for this setup (aside from me, of course). I'm sure a lot old timers like myself would a appreciate something that they can use right out of the box and not have to tinker with too much to get a good performance.
apatal said:
I'd like to respectfully make a request. Talking a look at your Flash kernel thread and I found the optimizations I was referring to in my post above, namely:
Upstream Linux versions 3.10.74-3.10.103
Updated to the October security patch
Patches for some CVEs
Upstream patches from CAF and Linux
Compiled with the Linaro 6.2 toolchain, compiled regularly from Uber's source?*here
Makefile optimizations
Forced encryption and dm-verity disabled
If you can add these to the stock kernel, I'm pretty sure you'll find a user base for this setup (aside from me, of course). I'm sure a lot old timers like myself would a appreciate something that they can use right out of the box and not have to tinker with too much to get a good performance.
Click to expand...
Click to collapse
This kernel is not meant to have anything other than the upstream Linux stuff, that's why it is labelled as reference. The only reason I include a kernel here at all is to prove that the additions are stable and cause no side effects. If you want those things, you can compile the kernel yourself (I can show you which patches and toolchain you would need).
Sent from my Nexus 6P using XDA Labs
The Flash said:
This kernel is not meant to have anything other than the upstream Linux stuff, that's why it is labelled as reference. The only reason I include a kernel here at all is to prove that the additions are stable and cause no side effects. If you want those things, you can compile the kernel yourself (I can show you which patches and toolchain you would need).
Click to expand...
Click to collapse
Noted with thanks! Great! When I get the time and resources to build my own kernel, I'll come back here for some pointers.
Btw, I saw a thread here about making your own ROM in the cloud. Is that something you can do as well for making a kernel?
apatal said:
Noted with thanks! Great! When I get the time and resources to build my own kernel, I'll come back here for some pointers.
Btw, I saw a thread here about making your own ROM in the cloud. Is that something you can do as well for making a kernel?
Click to expand...
Click to collapse
Definitely, I do all my building on a server.
The Flash said:
Definitely, I do all my building on a server.
Click to expand...
Click to collapse
Thanks! I'll take a look at it and see if I can figure it out.
Github and the kernel in the OP are updated to 3.10.104.
The Flash said:
Github and the kernel in the OP are updated to 3.10.104.
Click to expand...
Click to collapse
I supposed because of the upstream patch, third kernel already has the Dirty Cow fix, correct?
apatal said:
I supposed because of the upstream patch, third kernel already has the Dirty Cow fix, correct?
Click to expand...
Click to collapse
Yes.
Hi...Sir @The Flash,
This third command is Making FlashableZip?
OR
Non-FlashableZip?
•••
ZawZaw said:
Hi...Sir @The Flash,
This third command is Making FlashableZip?
OR
Non-FlashableZip?
•••
Click to expand...
Click to collapse
Flashable zip
The Flash said:
Flashable zip
Click to expand...
Click to collapse
Thanks Sir. :good:
3.10.105 released https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/log/?id=refs/tags/v3.10.105
Sent from my Nexus 5X using XDA-Developers Legacy app
tuhinxp04 said:
3.10.105 released https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/log/?id=refs/tags/v3.10.105
Click to expand...
Click to collapse
I am aware. I'm not actually doing this for this device anymore so there won't be an update.
Hi... @The Flash
I have one question, please reply me.
What is UBER?
UBER is a compliler as Google's ToolChain Prebuilt?
What different UBER and Google Toolchain?
I want to know,
Please explain me.
Thanks You Sir
•••
ZawZaw said:
Hi... @The Flash
I have one question, please reply me.
What is UBER?
UBER is a compliler as Google's ToolChain Prebuilt?
What different UBER and Google Toolchain?
I want to know,
Please explain me.
Thanks You Sir
•••
Click to expand...
Click to collapse
https://plus.google.com/+ChetKener/posts/YzMJEkzPQgp
The Flash said:
https://plus.google.com/+ChetKener/posts/YzMJEkzPQgp
Click to expand...
Click to collapse
Thanks You Sir.
•••
Hey @The Flash I've been reading through your "How to build Pure Nexus" thread and this thread and I believe that I have an understanding of how to properly setup an environment and compile a kernel for use. However, I still need some guidance as to how to pull commits from others sources and merge them into mine so that my kernel will have those features. The main features I want for my kernel are: LZ4 ramdisk compression (as seen in jollaman's and rachanta's kernels), F2FS compatibility, Overclocking for both the big and little clusters, and a kernel tick rate of 100Hz. If it is not too much to ask could you please show me an example of how to merge at least one of these features into my source so that when I compile my kernel it will have the feature?
HesThatGuy said:
Hey @The Flash I've been reading through your "How to build Pure Nexus" thread and this thread and I believe that I have an understanding of how to properly setup an environment and compile a kernel for use. However, I still need some guidance as to how to pull commits from others sources and merge them into mine so that my kernel will have those features. The main features I want for my kernel are: LZ4 ramdisk compression (as seen in jollaman's and rachanta's kernels), F2FS compatibility, Overclocking for both the big and little clusters, and a kernel tick rate of 100Hz. If it is not too much to ask could you please show me an example of how to merge at least one of these features into my source so that when I compile my kernel it will have the feature?
Click to expand...
Click to collapse
I can do overclocking because it is the easiest of those. Note that you will need some good git skills as well as fairly solid foundation of C to understand what is happening around the code when you run into conflicts.
1. Fetch the repo you want to get changes from (git fetch <url> <branch>)
Code:
git fetch https://github.com/Flash-Kernel/bullhead release-7.1.1
2. Find the commit hash you want to pick on Github and cherry-pick it
Code:
git cherry-pick e60c81d4839bb0f7efd3a79213467e7cbe77801d
3. If there are conflicts, it will make you resolved them first. You'll see conflict markers like so:
Code:
<<<<<<<<<< HEAD
STUFF THAT IS CURRENTLY THERE
==================
STUFF THAT IS EXPECTED TO BE THERE AFTER COMMIT
>>>>>>>>>>>>>
Sometimes, all the stuff that is currently there will be replaced by the stuff that is expected to be there. Other times, you'll have to be more fine about it and compare the diff on Github and see what is actually changing. It's a learned process, not really one that I can concretely teach.

[TOOLCHAINS] [ARM/ARM64] [GCC 7.2.1] GNU and Linaro - September 15th, 2017

Introduction
Hello everyone, these are some arm and arm64 toolchains I have compiled using a script created by @USBhost and modified by @frap129 and me. I know the concept of toolchains is not a new one, as there have been many specialized/optimized variants. However, some people may want a pure/unaltered toolchain for certain projects. That's what this will be, a generic/simple toolchain configuration. These will be done on a semi-nightly basis. They have been tested on up to date Arch Linux and Ubuntu 17.04 systems. If you know how to use scripts or cross compile, feel free to skip straight to the downloads!
Configuration
The GNU (standard or unlabeled) toolchains are built from GNU's latest gcc-7-branch. The Linaro toolchains are compiled from the linaro-local/gcc-7-integration-branch branch.
These are the additional components:
Code:
binutils 2.29.1
gmp 6.1.2
mpfr 3.1.5
mpc 1.0.3
isl 0.18
bionic r15c
Latest Linux Kernel headers (7318413077a5141a50a753b1fab687b7907eef16)
These toolchains are statically linked so they should work on any 64-bit Linux system; let me know if there are any issues with this.
Build script
These were compiled with crosstool-NG, which is extremely versatile but a little complex for the average user. Instead, I offer a build script in this repo to compile very similar toolchains (they will not be statically linked but that's no issue if you are only compiling on your machine and they won't have bionic). It has been modified heavily from the original repo to support two different architecture configurations (more can easily be added upon request).
To learn more about the script, give the README a glance, as it will be more up to date than the thread.
Using the toolchains
Please see the README.
Issues?
If you run into any issues with either using or compiling these toolchains, please do one of the following:
Open an issue on Github. Use the toolchains repo for issues with using, use the script repo for issues with compiling.
Make a post on here.
In both cases, I will require a detailed explanation of your system configuration, what you are compiling, and a FULL terminal output; without these, your problem will be ignored.
Credits
@USBhost: For the initial script and permission to make this thread
@frap129: For his modifications to the script
@MSF Jarvis: For testing the arm option
@kantjer: For testing the Ubuntu versions on Linux Mint
Reserved
Great stuff
nice, thank you ?
Sent from my LGLS676 using Tapatalk
Dude it took me days to get arm to build because of weird errors and you just added a flag that builds it?
frap129 said:
Dude it took me days to get arm to build because of weird errors and you just added a flag that builds it?
Click to expand...
Click to collapse
Yeah, all I did was target arm-linux-gnueabi and build the arm Linux headers and everything compiled just fine.
So linaro or standard, what's recommended?
And what flags do you suggest to use for ROM and kernel?
Any support for x86/x86_64 platform?
neobuddy89 said:
So linaro or standard, what's recommended?
And what flags do you suggest to use for ROM and kernel?
Click to expand...
Click to collapse
I personally use Linaro given all the work they do for the arm architecture. These are the flag I use for my kernel. I'd love to claim credit for them but @kwoktopus helped me with most of them
zainifame said:
Any support for x86/x86_64 platform?
Click to expand...
Click to collapse
I do not currently plan on it but if there is enough demand I can consider it.
The Flash said:
I personally use Linaro given all the work they do for the arm architecture. These are the flag I use for my kernel. I'd love to claim credit for them but @kwoktopus helped me with most of them
I do not currently plan on it but if there is enough demand I can consider it.
Click to expand...
Click to collapse
Hope u support the x86/x86_64 platform
The Flash said:
I do not currently plan on it but if there is enough demand I can consider it.
Click to expand...
Click to collapse
X86_64 is theoretically already supported.
All you need to do is Target x86_64 and choose what version then done.
Like what was done for arm
USBhost said:
X86_64 is theoretically already supported.
All you need to do is Target x86_64 and choose what version then done.
Click to expand...
Click to collapse
True, I can add an option to the script. I assumed he was referring to the prebuilts
what's recommended? btw great stuff
Dreamstar said:
what's recommended? btw great stuff
Click to expand...
Click to collapse
I don't really recommend anything other than trying both variants and seeing which one you like.
Great stuff on XDA after a long time good work
Hi, can I use it to compile my rom based on LineageOS 14.1? I started to develop my own rom recently and now I wanted to try changing the toolchain.
zibiksior said:
Hi, can I use it to compile my rom based on LineageOS 14.1? I started to develop my own rom recently and now I wanted to try changing the toolchain.
Click to expand...
Click to collapse
Mostly will not be able to compile a ROM with this but give it a try. It for sure can compile the inline kernel.
Just a brief update, the build script still works perfectly fine but I will start compiling the provided toolchains with crosstool-NG as I can make the toolchains statically linked, meaning that they should work with all versions of Linux. It will also be easier for me to manage and tarballs will be smaller. I will try to have this done tomorrow, given Linaro just released their updated snapshot source
The Flash said:
Mostly will not be able to compile a ROM with this but give it a try. It for sure can compile the inline kernel.
Just a brief update, the build script still works perfectly fine but I will start compiling the provided toolchains with crosstool-NG as I can make the toolchains statically linked, meaning that they should work with all versions of Linux. It will also be easier for me to manage and tarballs will be smaller. I will try to have this done tomorrow, given Linaro just released their updated snapshot source
Click to expand...
Click to collapse
Ok, I undertstand can you instead point me some link with prebuild toolchains which I can use to compile my rom? I connot find any... Or meybe some manual how to compile appropriate version of toolchain?
20170520 toolchains are now uploaded!
As I mentioned before, they are compiled with crosstool-NG so that it's easier for me to update. Furthermore, the toolchains are much smaller now so they're easier to download and they're statically linked so they *should* work when any updated form of Linux. Let me know of any issues and enjoy!
Nice stuff indeed, thanks
Btw i've once been told that gnueabi and androideabi are slightly different, would it be okay to compile android kernels with gnueabi?

Categories

Resources