Skip to contentSkip to conversation

Problem in linking with montavista toolchain for omap2420

DISCUSSION Indraneel 3 participants 5 messages Jan 28, 2007 – Jan 31, 2007

lore
Share & tools
lore

Indraneel

author
#0 lore raw

Hi,
I'm trying to cross-compile a program using the montavista tool chain for arm_v5t_le architecture for the omap2420(h4 board). I get the following error when linking a simple c program:

$ arm_v5t_le-gcc -DPOSIX -DMD=2 rz.c
/opt/montavista/devkit/arm/v5t_le/lib/gcc-lib/armv5tl-hardhat-linux/3.3.1/../../../../armv5tl-hardhat-linux/bin/ld: cannot find libc.so.6
collect2: ld returned 1 exit status

Surprisingly i couldn't find any file or link by the name libc.so.6 in the toolchain, although there was /opt/montavista/devkit/arm/v5t_le/target/usr/lib/libc.so

Other info
gcc
version 3.3.1 (MontaVista 3.3.1-7.0.15.0500230 2005-02-20) --with-sysroot=/opt/montavista/devkit/arm/v5t_le/target

GNU ld
version 2.14 20030612 (MontaVista 2.14-11.0.7.0500230 2005-02-20)

PATH=/opt/montavista/devkit/arm/v5t_le/bin:$PATH

I have searched for the error but couldn't find anything definitive.

Can anyone provide any clues as to what is wrong and how can i solve this linking issue?

Any pointers will be appreciated.

Regards,
Indraneel

#1 lore raw

Hey indranil,

I reckon u have copied the toolchain already installed somewhere, instead of installing them. try installing(perhaps from the cd(s) provided) the toolchain. The problem should be fixed then.

Respect,
Madhava Gauranga

Ittiam Systems | www.ittiam.com
A Red Herring Asia 100 Company, 2005
Forward Concepts' Worlds Most Preferred DSP IP Supplier, 2004, 2005

-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Indraneel
Sent: Sunday, January 28, 2007 5:23 PM
To: [email protected]
Subject: Problem in linking with montavista toolchain for omap2420

Hi,
I'm trying to cross-compile a program using the montavista tool chain for arm_v5t_le architecture for the omap2420(h4 board). I get the following error when linking a simple c program:

$ arm_v5t_le-gcc -DPOSIX -DMD=2 rz.c
/opt/montavista/devkit/arm/v5t_le/lib/gcc-lib/armv5tl-hardhat-linux/3.3.
1/../../../../armv5tl-hardhat-linux/bin/ld: cannot find libc.so.6
collect2: ld returned 1 exit status

Surprisingly i couldn't find any file or link by the name libc.so.6 in the toolchain, although there was /opt/montavista/devkit/arm/v5t_le/target/usr/lib/libc.so

Other info
gcc
version 3.3.1 (MontaVista 3.3.1-7.0.15.0500230 2005-02-20) --with-sysroot=/opt/montavista/devkit/arm/v5t_le/target

GNU ld
version 2.14 20030612 (MontaVista 2.14-11.0.7.0500230 2005-02-20)

PATH=/opt/montavista/devkit/arm/v5t_le/bin:$PATH

I have searched for the error but couldn't find anything definitive.

Can anyone provide any clues as to what is wrong and how can i solve this linking issue?

Any pointers will be appreciated.

Regards,
Indraneel

_______________________________________________
Linux-omap-open-source mailing list
[email protected]
http://linux.omap.com/mailman/listinfo/linux-omap-open-source

**********************************************************************
This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify [email protected].
**********************************************************************

author
#2 lore raw

Hello Madhava,

Quoted 5 lines · Madhava Gauranga

Hey indranil,

I reckon u have copied the toolchain already installed somewhere, instead of installing them. try installing(perhaps from the cd(s) provided) the toolchain.

It shouldn't be a case of missing libs as i am able to build and run the kernel from the same. I played around with the linker options

LDFLAGS= -nostdlib -L/opt/montavista/devkit/arm/v5t_le/target/usr/lib -L/opt/montavista/devkit/arm/v5t_le/lib/gcc-lib/armv5tl-hardhat-linux/3.3.1 -L/opt/montavista/devkit/arm/v5t_le/armv5tl-hardhat-linux/lib

With this i am past the previous error and the new error is

/opt/montavista/devkit/arm/v5t_le/lib/gcc-lib/armv5tl-hardhat-linux/3.3.1/../../../../armv5tl-hardhat-linux/bin/ld: warning: cannot find entry symbol _start; defaulting to 00008074 /tmp/cc0VA6xr.o(.text+0x8): In function `main':
: undefined reference to `puts'
collect2: ld returned 1 exit status

I guess it's something to do with path but i'm not sure what exactly.

The code i'm trying to build is

#include<stdio.h>
int main (void)
{
printf("Hello World - arm linux\n");
return 0;
}

Regards,
Indraneel

Quoted 71 lines

The problem should be fixed then.

Respect,
Madhava Gauranga

Ittiam Systems | www.ittiam.com
A Red Herring Asia 100 Company, 2005
Forward Concepts' Worlds Most Preferred DSP IP Supplier, 2004, 2005

-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Indraneel
Sent: Sunday, January 28, 2007 5:23 PM
To: [email protected]
Subject: Problem in linking with montavista toolchain for omap2420

Hi,
I'm trying to cross-compile a program using the montavista tool chain for arm_v5t_le architecture for the omap2420(h4 board). I get the following error when linking a simple c program:

$ arm_v5t_le-gcc -DPOSIX -DMD=2 rz.c
/opt/montavista/devkit/arm/v5t_le/lib/gcc-lib/armv5tl-hardhat-linux/3.3.
1/../../../../armv5tl-hardhat-linux/bin/ld: cannot find libc.so.6
collect2: ld returned 1 exit status

Surprisingly i couldn't find any file or link by the name libc.so.6 in the toolchain, although there was /opt/montavista/devkit/arm/v5t_le/target/usr/lib/libc.so

Other info
gcc
version 3.3.1 (MontaVista 3.3.1-7.0.15.0500230 2005-02-20) --with-sysroot=/opt/montavista/devkit/arm/v5t_le/target

GNU ld
version 2.14 20030612 (MontaVista 2.14-11.0.7.0500230 2005-02-20)

PATH=/opt/montavista/devkit/arm/v5t_le/bin:$PATH

I have searched for the error but couldn't find anything definitive.

Can anyone provide any clues as to what is wrong and how can i solve this linking issue?

Any pointers will be appreciated.

Regards,
Indraneel

_______________________________________________
Linux-omap-open-source mailing list
[email protected]
http://linux.omap.com/mailman/listinfo/linux-omap-open-source

**********************************************************************
This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error please notify [email protected].
**********************************************************************

#3 lore raw

Hi,

Quoted 11 lines · Indraneel

LDFLAGS= -nostdlib -L/opt/montavista/devkit/arm/v5t_le/target/usr/lib -L/opt/montavista/devkit/arm/v5t_le/lib/gcc-lib/armv5tl-hardhat-linux/3.3.1 -L/opt/montavista/devkit/arm/v5t_le/armv5tl-hardhat-linux/lib

With this i am past the previous error and the new error is

/opt/montavista/devkit/arm/v5t_le/lib/gcc-lib/armv5tl-hardhat-linux/3.3.1/../../../../armv5tl-hardhat-linux/bin/ld: warning: cannot find entry symbol _start; defaulting to 00008074 /tmp/cc0VA6xr.o(.text+0x8): In function `main':
: undefined reference to `puts'
collect2: ld returned 1 exit status

I guess it's something to do with path but i'm not sure what exactly.

These function (puts, _start) are part of the C library, which you disabled by passing -nostdlib so it's understandable that the linker is not finding them.

Personally I'd just try a different toolchain. Tools like "scratchbox" or "crosstool" or Gentoo's "crossdev" make it particularly easy to compile a working toolchain. You can also build it using only bare gcc, binutils and glibc/uclibc sources.

If you have libc.so but not libc.so.6 try symlinking libc.so.6 -> libc.so (not guarranted to work but may help, maybe someone forgot to pack the link).

Regards,
Andrew

author
#4 lore raw

Hello Andrew,

Quoted 15 lines · andrzej zaborowski

Hi,

Quoted 11 lines · Indraneel

LDFLAGS= -nostdlib -L/opt/montavista/devkit/arm/v5t_le/target/usr/lib -L/opt/montavista/devkit/arm/v5t_le/lib/gcc-lib/armv5tl-hardhat-linux/3.3.1 -L/opt/montavista/devkit/arm/v5t_le/armv5tl-hardhat-linux/lib

With this i am past the previous error and the new error is

/opt/montavista/devkit/arm/v5t_le/lib/gcc-lib/armv5tl-hardhat-linux/3.3.1/../../../../armv5tl-hardhat-linux/bin/ld: warning: cannot find entry symbol _start; defaulting to 00008074 /tmp/cc0VA6xr.o(.text+0x8): In function `main':
: undefined reference to `puts'
collect2: ld returned 1 exit status

I guess it's something to do with path but i'm not sure what exactly.

Quoted 8 lines

These function (puts, _start) are part of the C library, which you disabled by passing -nostdlib so it's understandable that the linker is not finding them.

Personally I'd just try a different toolchain. Tools like "scratchbox" or "crosstool" or Gentoo's "crossdev" make it particularly easy to compile a working toolchain. You can also build it using only bare gcc, binutils and glibc/uclibc sources.

The tool chain should be okay as i'm "able to build and run the kernel" using the same montavista v5t_le toolchain. But surprisingly i'm unable to build a simple application binary using the same. I'm giving the -nostdlib option so that it doesn't pick C libs from the host. The path to the libs is provided in the -L option. Correct me if my understanding is wrong.
It should be a matter of giving the correct compiler/linker options to build the code but i haven't been able to figure that out till now.

If somebody is using the montavista v5t_le toolchain (for TI's H4 board), please let me know the options to compile and link a simple HelloWorld program.

Other info
gcc
version 3.3.1 (MontaVista 3.3.1-7.0.15.0500230 2005-02-20) --with-sysroot=/opt/montavista/devkit/arm/v5t_le/target

GNU ld
version 2.14 20030612 (MontaVista 2.14-11.0.7.0500230 2005-02-20)

PATH=/opt/montavista/devkit/arm/v5t_le/bin:$PATH (i keep the toolchain here)

Regards,
Indraneel

Quoted 9 lines

If you have libc.so but not libc.so.6 try symlinking libc.so.6 -> libc.so (not guarranted to work but may help, maybe someone forgot to pack the link).

Regards,
Andrew