GCC cross compiler for x86_64-elf


 
Thread Tools Search this Thread
Operating Systems Linux GCC cross compiler for x86_64-elf
# 1  
Old 12-31-2008
GCC cross compiler for x86_64-elf

Hi,
I am building GCC cross compiler for x86_64-elf
for that a have followed steps,


1. mkdir build-gmp build-mpfr

2. cd build-gmp

3. ../gmp-4.2/configure --prefix=/usr/local

4. make all install

5. make check

6.cd ../build-mpfr

7. ../mpfr-2.3.2/configure --prefix=/usr/local/

8. make all install

9. export LD_LIBRARY_PATH= /usr/local/lib

----------------------------------------------------------------------

10. export PREFIX=/usr/cross

11. export TARGET=x86_64-elf

12. cd /usr/src

13. mkdir build-binutils build-gcc

14. cd ../build-binutils

15. ../binutils-2.18/configure --target=$TARGET --prefix=$PREFIX --disable-nls

16. make all

17. make install

18. export PATH=$PATH:$PREFIX/bin

19. cd ../build-gcc
../gcc-4.3.2/configure --target=$TARGET --prefix=$PREFIX --disable-nls
--enable-languages=c,c++ --without-headers --with-gmp=/usr/local --with-mpfr=/usr/local

20. make all-gcc install-gcc


------Porting new library------

21. cd build-newlib/

22. ../newlib-1.17.0/configure --prefix=$PREFIX --target=$TARGET

23. make all install


-------------Rebuild GCC with headers......
using the --with-headers option to tell GCC where to find the headers of new C library.

24. ../gcc-4.3.2/configure --target=$TARGET --prefix=$PREFIX --disable-nls
--enable-languages=c,c++ --with-headers=/usr/cross/x86_64-elf/include --with-gmp=
/usr/local --with-mpfr=/usr/local

25. make all-gcc

26. make install-gcc


It is successfuly installed. But when i am compiling simple helloworld program it is giving error as

[root@vm-centos12 build-gcc]#x86_64-elf-gcc hello.c
/usr/cross/lib/gcc/x86_64-elf/4.3.2/../../../../x86_64-elf/bin/ld: crt0.o: No such file: No such file or directory
collect2: ld returned 1 exit status

I have searched for crt0.o file but this file is not present in gcc installed folder.

Please tell me where is the problem and steps that i followed are correct or not.

I am very much thankful to you.

Regards Smilie
Mandar.
Mandar123
# 2  
Old 12-31-2008
You cannot run a 64-bit application on 32-bit hardware. If you did, in fact, install the compiler on the 64-bit host, you must also install the "run time" libraries. check the documentation for that. The "run time" libraries must be compiled for 64-bit hardware, so either they are cross-compiled, or compiled statically on the target host.
# 3  
Old 12-31-2008
Quote:
Originally Posted by otheus
You cannot run a 64-bit application on 32-bit hardware. If you did, in fact, install the compiler on the 64-bit host, you must also install the "run time" libraries. check the documentation for that. The "run time" libraries must be compiled for 64-bit hardware, so either they are cross-compiled, or compiled statically on the target host.

Yes sir,
I am not executing 64-bit application. I want to compile only.
Now the proble is of C Runtime library, To resolve this i have installed newlib library, So i got header files for new compiler but not getting library files ie libgcc.a libc.so etc.
I am cross compiling the library by giving target as x86_64-elf.

For installing i Followed steps-

cd build-newlib/

../newlib-1.17.0/configure --prefix=/usr/cross --target=x86_64-elf

make all install

-------------Rebuild GCC with headers......

../gcc-4.3.2/configure --target=x86_64-elf --prefix=/usr/cross --disable-nls --enable-languages=c,c++ --with-headers=/usr/cross/x86_64-elf/include --with-gmp= /usr/local --with-mpfr=/usr/local --with-newlib=/usr/crsoss/x86_64-elf/lib

make all-gcc

make install-gcc

So problem is, i am not getting C library files for creating object file.
please tell me where i am wrong.

Thanking you,
Mandar.
Mandar123
# 4  
Old 12-31-2008
Quote:
Originally Posted by Mandar123
Code:
[root@vm-centos12 build-gcc]#x86_64-elf-gcc hello.c 
/usr/cross/lib/gcc/x86_64-elf/4.3.2/../../../../x86_64-elf/bin/ld: crt0.o: No such file: No such file or directory 
collect2: ld returned 1 exit status

Code:

See if the crt0.o file is anywhere in
Code:
/usr/cross/lib/gcc/x86_64-elf/

using find.
Code:
find /usr/cross/lib/gcc/x86_64-elf -type f -name crt0.o -ls

# 5  
Old 01-01-2009
Quote:
Originally Posted by otheus
[/code]
See if the crt0.o file is anywhere in
Code:
/usr/cross/lib/gcc/x86_64-elf/

using find.
Code:
find /usr/cross/lib/gcc/x86_64-elf -type f -name crt0.o -ls


Yes i tried this but this file is not found.
So i searched for this error and somewhere i got idea to copy crt0.o from target machine(64-bit) in /usr/cross/x86_64-elf/lib.
Then this "crt0.o file not found" is resolved but getting another errors for "*.o" files,
means it is not getting C library files.

After installation in my system only libc.a, libm.a, libg.a, libnosys.a files are created in /usr/cross/x86_64-elf/lib directory.

I am not getting whether i missed any option for library files while configuring and installing newlib / GCC.(steps i followed are in previous post)

Please tell me what i have to do for this problem.


Thanking you,
Mandar.
Smilie
Mandar123
# 6  
Old 01-01-2009
I do not have specific experience with this, but as I said in my first post, in order to make any cross compiler work, you must also install all cross-platform libraries, header files, etc. This includes the "stub object" .o files that gcc is currently requiring. Again, look at the documentation carefully to determine what steps are required for installing the support libraries and object files.

However you compile it, the linker still needs to find the static or dynamic objects which will be used to ultimately execute the program. This means you have to have all 64-bit libraries installed upon which the program depends. Apparently, then, before you cross-compile a program, you must install all supporting libraries, or cross compile them. Installing would be much easier.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Programming

what is a cross compiler

recently i was been to an interview to an automotive company, they have posed me a question that what section of compiler must be changed if the target is changed. ie,if ur compiler is meant for generating executable to a 8051 target what changes do you do to make it flexible to generate the... (2 Replies)
Discussion started by: shyam.sunder91
2 Replies

2. Linux

Building a ppc476 enabled GCC cross compiler and tool chain

Building a ppc476 enabled GCC cross compiler and tool chain Hello, I am trying to build a cross GCC compiler for PPC476. I applied all the relevant patches. Cross compiler build was successful. When i try to compile the source code using the cross compiler i am getting the below error... (1 Reply)
Discussion started by: raghuhb
1 Replies

3. UNIX for Advanced & Expert Users

Building a ppc476 enabled GCC cross compiler and tool chain

Building a ppc476 enabled GCC cross compiler and tool chain Hello, I am trying to build a cross GCC compiler for PPC476. I applied all the relevant patches. Cross compiler build was successful. When i try to compile the source code using the cross compiler i am getting the below error... (1 Reply)
Discussion started by: raghuhb
1 Replies

4. Red Hat

Building a ppc476 enabled GCC cross compiler and toolchain

Building a ppc476 enabled GCC cross compiler and tool chain Hello, I am trying to build a cross GCC compiler for PPC476. I applied all the relevant patches. Cross compiler build was successful. When i try to compile the source code using the cross compiler i am getting the below error... (0 Replies)
Discussion started by: raghuhb
0 Replies

5. Red Hat

installing the gcc cross compiler

While i try to install the gcc cross compiler using following commands in fedora 6 commands cd /etc/yum.repos.d/ # wget http://fedora-arm.wantstofly.org/cross/cross.repo # yum install armv5tel-redhat-linux-gnueabi-gcc i got an error # cd yum.repos.d # wget... (3 Replies)
Discussion started by: sujith4u87
3 Replies

6. SuSE

cross gcc compiler on OpenSUSE

Hi All I want to create build machine for three architecture (i386, amd64 and ia64) on 32bit machine on OpenSUSE 10.0 I installed: cross-i386-gcc-icecream-backend-4.3.1_20080507-7.1 cross-i386-binutils-2.18.50.20080409-12.1 cross-x86_64-gcc-icecream-backend-4.3.1_20080507-7.1... (0 Replies)
Discussion started by: Kolesar
0 Replies

7. Linux

GCC cross compiler for x86_64

Hi, I am tried to install GCC cross compiler for 64-bit machine. i want compile one application for 64 bit machine. I have followed steps form GCC Cross-Compile - OSDev Wiki . Please if anybody have installed cross compiler successfully, please tell me the steps followed by you. Thanking... (0 Replies)
Discussion started by: Mandar123
0 Replies

8. Linux

gcc compiled executable not working across x86_64 linux platforms

Hi I compiled a hello world program on two different 64-bit Linux machines, named quimby and node0331. When I compile on quimby and run on node0331 I get a "Floating exception (core dumped)" error. But if I do it in reverse, things work fine. Here's my compilation on quimby: $ uname -a... (3 Replies)
Discussion started by: same1290
3 Replies

9. UNIX for Dummies Questions & Answers

xl C/C++ compiler to GCC compiler

Hi, we are converting from IBM-AIX(xl c/c++ compiler) to Linux(GCC complier). As a part of this i need to change the CFLAGS. The xl c/c++ complier CFLAGS is CFLAGS := $(CDEBUG) $(PROJECT_INCLUDE_DIRS) $(COBJECT_MODE) -qcpluscmt -qmakedep -qcheck=all \ -qalign=bit_packed $(LINT_FLAGS)... (0 Replies)
Discussion started by: pbattu1
0 Replies
Login or Register to Ask a Question