LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Embedded & Single-board computer (http://www.linuxquestions.org/questions/linux-embedded-and-single-board-computer-78/)
-   -   Where can I download arm-linux-* toolchain ? (http://www.linuxquestions.org/questions/linux-embedded-and-single-board-computer-78/where-can-i-download-arm-linux-%2A-toolchain-871053/)

unimous 03-25-2011 09:01 PM

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?

corp769 03-25-2011 09:16 PM

It looks like http://www.gnuarm.com/ should be it.

knudfl 03-26-2011 04:16 AM

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

corp769 03-26-2011 04:17 AM

Quote:

Originally Posted by knudfl (Post 4303919)
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

Ooo, thanks for that. I didn't come across that one.

cnxsoft 03-27-2011 11:21 PM

If you are using Ubuntu, the easiest way is probably to install the Linaro ARM cross-compiler

https://wiki.linaro.org/Resources/ToolchainInstall

PoleStar 03-29-2011 01:00 PM

I use fedora, they have a "cross" repository. After adding that you can have all this

Code:


[co@localhost ~]$ armv5tel-redhat-linux-gnueabi-
armv5tel-redhat-linux-gnueabi-addr2line  armv5tel-redhat-linux-gnueabi-gcc        armv5tel-redhat-linux-gnueabi-objcopy
armv5tel-redhat-linux-gnueabi-ar        armv5tel-redhat-linux-gnueabi-gcov      armv5tel-redhat-linux-gnueabi-objdump
armv5tel-redhat-linux-gnueabi-as        armv5tel-redhat-linux-gnueabi-gdb        armv5tel-redhat-linux-gnueabi-ranlib
armv5tel-redhat-linux-gnueabi-c89        armv5tel-redhat-linux-gnueabi-gdbtui    armv5tel-redhat-linux-gnueabi-readelf
armv5tel-redhat-linux-gnueabi-c99        armv5tel-redhat-linux-gnueabi-gprof      armv5tel-redhat-linux-gnueabi-run
armv5tel-redhat-linux-gnueabi-cc        armv5tel-redhat-linux-gnueabi-gstack    armv5tel-redhat-linux-gnueabi-size
armv5tel-redhat-linux-gnueabi-c++filt    armv5tel-redhat-linux-gnueabi-ld        armv5tel-redhat-linux-gnueabi-strings
armv5tel-redhat-linux-gnueabi-cpp        armv5tel-redhat-linux-gnueabi-nm        armv5tel-redhat-linux-gnueabi-strip

not bad eh?

theNbomr 04-05-2011 05:45 PM

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.

littlebigman 04-07-2013 04:36 PM

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.

theNbomr 04-07-2013 06:21 PM

There is evidently a suitable cross toolchain available from a Ubuntu repository . A little Google searching should turn up a download method.
--- rod.

littlebigman 04-08-2013 06:15 AM

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.

goumba 04-08-2013 06:29 AM

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.

littlebigman 04-08-2013 07:17 AM

Thanks.

I tried this on the PC I intend to use to cross-compile applications for the SheevaPlug:
Code:

# apt-cache search arm gcc
cpp-4.6-arm-linux-gnueabi - GNU C preprocessor
cpp-4.6-arm-linux-gnueabihf - GNU C preprocessor
cpp-4.7-arm-linux-gnueabi - GNU C preprocessor
cpp-4.7-arm-linux-gnueabihf - GNU C preprocessor
cpp-arm-linux-gnueabi - The GNU C preprocessor (cpp) for armel architecture
cpp-arm-linux-gnueabihf - The GNU C preprocessor (cpp) for armhf architecture
gcc-4.6-arm-linux-gnueabi - GNU C compiler
gcc-4.6-arm-linux-gnueabi-base - GCC, the GNU Compiler Collection (base package)
gcc-4.6-arm-linux-gnueabihf - GNU C compiler
gcc-4.6-arm-linux-gnueabihf-base - GCC, the GNU Compiler Collection (base package)
gcc-4.6-multilib-arm-linux-gnueabi - GNU C compiler (multilib files)
gcc-4.6-multilib-arm-linux-gnueabihf - GNU C compiler (multilib files)
gcc-4.7-arm-linux-gnueabi - GNU C compiler
gcc-4.7-arm-linux-gnueabi-base - GCC, the GNU Compiler Collection (base package)
gcc-4.7-arm-linux-gnueabihf - GNU C compiler
gcc-4.7-arm-linux-gnueabihf-base - GCC, the GNU Compiler Collection (base package)
gcc-4.7-multilib-arm-linux-gnueabi - GNU C compiler (multilib files)
gcc-4.7-multilib-arm-linux-gnueabihf - GNU C compiler (multilib files)
gcc-arm-linux-gnueabi - The GNU C compiler for armel architecture
gcc-arm-linux-gnueabihf - The GNU C compiler for armhf architecture
gccgo-4.7-arm-linux-gnueabi - GNU Go compiler
gccgo-4.7-arm-linux-gnueabihf - GNU Go compiler
gfortran-arm-linux-gnueabi - The GNU Fortran 95 compiler for armel architecture
gfortran-arm-linux-gnueabihf - The GNU Fortran 95 compiler for armhf architecture
gobjc++-arm-linux-gnueabi - The GNU Objective-C++ compiler for armel architecture
gobjc++-arm-linux-gnueabihf - The GNU Objective-C++ compiler for armhf architecture
gobjc-arm-linux-gnueabi - The GNU Objective-C compiler for armel architecture
gobjc-arm-linux-gnueabihf - The GNU Objective-C compiler for armhf architecture
libgcc1-armel-cross - GCC support library
libgcc1-armhf-cross - GCC support library
libgcc1-dbg-armel-cross - GCC support library (debug symbols)
libgcc1-dbg-armhf-cross - GCC support library (debug symbols)
libhfgcc1-armel-cross - GCC support library (hard float ABI)
libhfgcc1-dbg-armel-cross - GCC support library (debug symbols)
libsfgcc1-armhf-cross - GCC support library (soft float ABI)
libsfgcc1-dbg-armhf-cross - GCC support library (debug symbols)

I have no idea what to install to compile code for the ARMv5TE that the Plug uses.

Wouldn't it be a better idea to use the cross-compiler provided by Marvell instead?

goumba 04-08-2013 07:48 AM

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.

littlebigman 04-08-2013 08:47 AM

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.

theNbomr 04-08-2013 09:13 AM

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):
  • endian-ness - little, big
  • ABI - old, enhanced
  • math - FPU (which), emulated, software
  • ARM architecture - ArmX
  • Standard C lib version
  • Threading model - POSIX, Linuxthreads
Every CPU, and every board implementation has its particular idiosyncrasies, and the toolchain should match these. Vendor-supplied toolchains can be the best way to go, although these aren't always the best either.

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 12:54 PM.