Where can I download arm-linux-* toolchain ?
I wander where to download arm-linux-* toolchain?
I have found two website: [1].http://www.arm.linux.org.uk/, but the toolchain is too old. [2].http://www.gnuarm.com/, but the toolchian's name is arm-elf-*, not arm-linux-*, are they the same? Is there an official organization who maintain the cross toolchain, and who is he? |
It looks like http://www.gnuarm.com/ should be it.
|
The only recommended tool chain is "crosstool-ng"
Other tools are poorly maintained or not maintained at all. http://ymorin.is-a-geek.org/dokuwiki/projects/crosstool http://ymorin.is-a-geek.org/download...1.10.0.tar.bz2 |
Quote:
|
If you are using Ubuntu, the easiest way is probably to install the Linaro ARM cross-compiler
https://wiki.linaro.org/Resources/ToolchainInstall |
I use fedora, they have a "cross" repository. After adding that you can have all this
Code:
|
From my experience, there are so many permutations and combinations of Arm configurations (ABI: old vs new, floating point math: soft vs hardware, endianness, Arm versions/models, etc.), as well as building against various kernel headers, C library, and so on, that it is almost impossible to find a ready-made version that works perfectly with your hardware and OS. Building your own can also be somewhat painful, but Crosstool-NG is as good a tool as you'll find for building a cross toolchain.
--- rod. |
I need a toolchain to cross-compile applications for the armv5tel processor used in the SheevaPlug.
Do I really must learn how to build a whole toolchain myself, or is there a binary toolchain already available somewhere? Thank you. |
There is evidently a suitable cross toolchain available from a Ubuntu repository . A little Google searching should turn up a download method.
--- rod. |
Thanks. It took a bit more than a little Googling to sort through old/incomplete/vague pages on the subject.
Turns out the toolchain is available here ("Host SW Support Package For Linux"): http://www.plugcomputer.org/downloads/plug-basic/ However, no documentation is provided to explain what to do with the two directories it contains: gcc/ rootfsv1.0/ How to go from this to a running "Hello, World!"? Thank you. |
I am running Debian, but if I search in Synaptic, it turns up plenty of packages related to arm development. If you search for "arm" by "Name", scroll down a bit until you find the gcc packages. Select the appropriate packages and it should pull in the necessary ccp, binutils, etc. You should be able to do the same on Ubuntu.
|
Thanks.
I tried this on the PC I intend to use to cross-compile applications for the SheevaPlug: Code:
# apt-cache search arm gcc Wouldn't it be a better idea to use the cross-compiler provided by Marvell instead? |
gcc-4.7-arm-linux-gnueabi looks like the one you want. It's for endian little processors.
According to http://infocenter.arm.com/help/index.../BABJCGCF.html, the processor supports both, but legacy support for big endian. Check out that page, it specifies compiler options you may need to know, even if you use their toolchain. If you use the file from Marvell, it appears that the gcc.tar.bz2 has the toolchain you're looking for. Extract it, and add the (path)/bin to your PATH. Then use the appropriate directories for include and libs when building. |
Thanks. I'd rather use the toolchain provided by Marvell, and install another toolchain if it doesn't work.
I successfully compiled and ran "Hello, World". Am I correct in understanding that cross-compiling an application basically means: 1. Editing PATH once so the build process knows where to find the toolchain 2. Using the right path in "./configure" so it knows where to find the includes/libraries? Also, any idea why Marvell also packed a root fs in the toolchain ZIP? Thank you. |
Much of the toolchain requires library files, headers, and sundry other components in order to work. The convention for cross toolchains is to put these in a skeleton filesystem that is part of the toolchain. This is known as 'sysroot'. Sometimes a toolchain gets built with a hardcoded expectation of where the sysroot is installed, and this may not match your requirements. Also, the components of the sysroot should be an exact or very close match to the respective components on the actual target host.
You need to know something about the target host architecture software (libc, libm, etc.) to make sure this is the case. Sadly, there is a very large universe of possible mismatches in the ARM architecture. 'Hello World' may run just fine, but other more complex code may fail in strange ways. This accounts for the plethora of gcc's found in the repository someone posted. The list of compatibility issues includes (but not limited to):
Using the toolchain to build packages with the usual 'configure; make; make install' routine can frequently be accomplished by pointing $PATH to the cross toolchain binary directory, as well as providing the correct '--host=xxxxx' toolchain prefix to the configure script. --- rod. |
All times are GMT -5. The time now is 05:13 AM. |