ct-ng 1.16.0: setting glibc 2.8 cause build to fail

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

ct-ng 1.16.0: setting glibc 2.8 cause build to fail

zvivered
Hello,

I'm using version 1.16.0 to build a toolchain fo i686-nptl-linux-gnu.

I ran:
ct-ng i686-nptl-linux-gnu
Then, with menuconfig I set glibc to 2.8 (instead of 2.9)

The build fails with the following messages:

[CFG  ]    checking for i686-nptl-linux-gnu-ranlib... i686-nptl-linux-gnu-ranlib
[CFG  ]    checking whether
/home/zvivered/ct-ng-1.16.0/bin/.build/i686-nptl-linux-gnu/buildtools/lib/gcc/i686-nptl-linux-gnu/4.5.2/../../../../i686-nptl-linux-gnu/bin/as
is GNU as... yes
[CFG  ]    checking whether
/home/zvivered/ct-ng-1.16.0/bin/.build/i686-nptl-linux-gnu/buildtools/lib/gcc/i686-nptl-linux-gnu/4.5.2/../../../../i686-nptl-linux-gnu/bin/ld
is GNU ld... yes
[CFG  ]    checking for
/home/zvivered/ct-ng-1.16.0/bin/.build/i686-nptl-linux-gnu/buildtools/lib/gcc/i686-nptl-linux-gnu/4.5.2/../../../../i686-nptl-linux-gnu/bin/as...
/home/zvivered/ct-ng-1.16.0/bin/.build/i686-nptl-linux-gnu/buildtools/lib/gcc/i686-nptl-linux-gnu/4.5.2/../../../../i686-nptl-linux-gnu/bin/as
[CFG  ]    checking version of
/home/zvivered/ct-ng-1.16.0/bin/.build/i686-nptl-linux-gnu/buildtools/lib/gcc/i686-nptl-linux-gnu/4.5.2/../../../../i686-nptl-linux-gnu/bin/as...
2.21.1, bad
[CFG  ]    checking for
/home/zvivered/ct-ng-1.16.0/bin/.build/i686-nptl-linux-gnu/buildtools/lib/gcc/i686-nptl-linux-gnu/4.5.2/../../../../i686-nptl-linux-gnu/bin/ld...
/home/zvivered/ct-ng-1.16.0/bin/.build/i686-nptl-linux-gnu/buildtools/lib/gcc/i686-nptl-linux-gnu/4.5.2/../../../../i686-nptl-linux-gnu/bin/ld
[CFG  ]    checking version of
/home/zvivered/ct-ng-1.16.0/bin/.build/i686-nptl-linux-gnu/buildtools/lib/gcc/i686-nptl-linux-gnu/4.5.2/../../../../i686-nptl-linux-gnu/bin/ld...
2.21.1, bad
[CFG  ]    checking for pwd... /bin/pwd
[CFG  ]    checking for i686-nptl-linux-gnu-gcc... (cached)
i686-nptl-linux-gnu-gcc
[CFG  ]    checking version of i686-nptl-linux-gnu-gcc    ... 4.5.2, ok
[CFG  ]    checking for gnumake... no
[CFG  ]    checking for gmake... gmake
[CFG  ]    checking version of gmake... 3.81, ok
[CFG  ]    checking for gnumsgfmt... no
[CFG  ]    checking for gmsgfmt... no
[CFG  ]    checking for msgfmt... msgfmt
[CFG  ]    checking version of msgfmt... 0.17, ok
[CFG  ]    checking for makeinfo... makeinfo
[CFG  ]    checking version of makeinfo... 4.8, ok
[CFG  ]    checking for sed... sed
[CFG  ]    checking version of sed... 4.1.5, ok
[CFG  ]    checking for autoconf... autoconf
[CFG  ]    checking whether autoconf works... yes
[ERROR]    configure: error:
[CFG  ]    *** These critical programs are missing or too old: as ld
[CFG  ]    *** Check the INSTALL file for required versions.

What is the reason for this failure ?

Attached the .config I'm using.

My host is: Centos 5.8

I need 2.8 because Intel Compiler does not support 2.9

Thanks,
Zvika

--
For unsubscribe information see http://sourceware.org/lists.html#faq

config.txt (13K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: ct-ng 1.16.0: setting glibc 2.8 cause build to fail

Yann E. MORIN-2
Zvi, All,

On Monday 29 October 2012 Zvi Vered wrote:
> I'm using version 1.16.0 to build a toolchain fo i686-nptl-linux-gnu.
>
> I ran:
> ct-ng i686-nptl-linux-gnu
> Then, with menuconfig I set glibc to 2.8 (instead of 2.9)
>
> The build fails with the following messages:
[--SNIP--]
> [ERROR]    configure: error:
> [CFG  ]    *** These critical programs are missing or too old: as ld
> [CFG  ]    *** Check the INSTALL file for required versions.
>
> What is the reason for this failure ?

glibc-2.8's ./configure has an incorrect check for binutils version. In
this case glibc-2.8 was not prepared to recognised binutils-2.2x (IIRC),
and thus its ./configure does not recognise them.

As a rule of thumb, it is highly suggested that one uses versions of the
same /age/. Mixing 'old' versions of a component with a newer version of
another component can be problematic.

Advice: either upgrade to a newer glibc, or downgrade the binutils to a
version that was current at the time glibc-2.8 was released. Ditto for
the compiler and the kernel headers.

Quote of the day:
    Friends don't let friends build toolchains
    with disparate component versions.

Regards,
Yann E. MORIN.

--
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

--
For unsubscribe information see http://sourceware.org/lists.html#faq

Reply | Threaded
Open this post in threaded view
|

Re: ct-ng 1.16.0: setting glibc 2.8 cause build to fail

zvivered
Dear Mr. Morin, All,

glibc 2.8 was last modified at 26-Feb-2009.
I must use glibc 2.8 (or earlier) because Intel Compiler does not
support glibc 2.9 (or later).

I have to use kernel 3.2.x (or later) because this kernel contains the
drivers I need for the PC104 chipset.
Kernel 3.2.25 (for example) was released at: 08-Feb-2012

When I using gcc 4.3.2 (09-Mar-2008) I got:

linux-gnu/buildtools/lib/gcc/i686-nptl-linux-gnu/4.3.2/include-fixed
-isystem /home/zvivered/ct-ng-1.16.0/release/i686-nptl-linux-gnu/sysroot/usr/include
-D_LIBC_REENTRANT -include ../include/libc-symbols.h  -DPIC -DSHARED
  -DASSEMBLER  -DGAS_SYNTAX  -Wa,--noexecstack  -o
/home/zvivered/ct-ng-1.16.0/bin/.build/i686-nptl-linux-gnu/build/build-libc-final/math/s_frexp.os
-MD -MP -MF /home/zvivered/ct-ng-1.16.0/bin/.build/i686-nptl-linux-gnu/build/build-libc-final/math/s_frexp.os.dt
-MT /home/zvivered/ct-ng-1.16.0/bin/.build/i686-nptl-linux-gnu/build/build-libc-final/math/s_frexp.os
[ALL  ]    ../sysdeps/i386/fpu/s_frexp.S: Assembler messages:
[ALL  ]    ../sysdeps/i386/fpu/s_frexp.S:66: Error: invalid identifier
for ".ifdef"
[ALL  ]    ../sysdeps/i386/fpu/s_frexp.S:66: Error: junk at end of
line, first unrecognized character is `1'
[ALL  ]    ../sysdeps/i386/fpu/s_frexp.S:66: Error: junk at end of
line, first unrecognized character is `1'
[ALL  ]    ../sysdeps/i386/fpu/s_frexp.S:66: Error: junk at end of
line, first unrecognized character is `1'
[ALL  ]    ../sysdeps/i386/fpu/s_frexp.S:66: Error: junk at end of
line, first unrecognized character is `.'
[ALL  ]    ../sysdeps/i386/fpu/s_frexp.S:66: Error: junk at end of
line, first unrecognized character is `1'
[ALL  ]    ../sysdeps/i386/fpu/s_frexp.S:66: Error: expected comma
after name `' in .size directive
[ALL  ]    ../sysdeps/i386/fpu/s_frexp.S:66: Error: ".endif" without ".if"
[ALL  ]    ../sysdeps/i386/fpu/s_frexp.S:66: Error: junk
`.get_pc_thunk.dx' after expression
[ERROR]    make[3]: ***
[/home/zvivered/ct-ng-1.16.0/bin/.build/i686-nptl-linux-gnu/build/build-libc-final/math/s_frexp.os]
Error 1
[ALL  ]    make[3]: *** Waiting for unfinished jobs....
[ALL  ]    make[3]: Leaving directory
`/home/zvivered/ct-ng-1.16.0/bin/.build/src/glibc-2.8/math'
[ERROR]    make[2]: *** [math/subdir_lib] Error 2
[ALL  ]    make[2]: Leaving directory
`/home/zvivered/ct-ng-1.16.0/bin/.build/src/glibc-2.8'
[ERROR]    make[1]: *** [all] Error 2
[ALL  ]    make[1]: Leaving directory
`/home/zvivered/ct-ng-1.16.0/bin/.build/i686-nptl-linux-gnu/build/build-libc-final'

Do you think it is possible to use kernel 3.x with glib2.8 ?

Thanks,
Zvika

On Tue, Oct 30, 2012 at 2:06 AM, Yann E. MORIN <[hidden email]> wrote:

> Zvi, All,
>
> On Monday 29 October 2012 Zvi Vered wrote:
>> I'm using version 1.16.0 to build a toolchain fo i686-nptl-linux-gnu.
>>
>> I ran:
>> ct-ng i686-nptl-linux-gnu
>> Then, with menuconfig I set glibc to 2.8 (instead of 2.9)
>>
>> The build fails with the following messages:
> [--SNIP--]
>> [ERROR]    configure: error:
>> [CFG  ]    *** These critical programs are missing or too old: as ld
>> [CFG  ]    *** Check the INSTALL file for required versions.
>>
>> What is the reason for this failure ?
>
> glibc-2.8's ./configure has an incorrect check for binutils version. In
> this case glibc-2.8 was not prepared to recognised binutils-2.2x (IIRC),
> and thus its ./configure does not recognise them.
>
> As a rule of thumb, it is highly suggested that one uses versions of the
> same /age/. Mixing 'old' versions of a component with a newer version of
> another component can be problematic.
>
> Advice: either upgrade to a newer glibc, or downgrade the binutils to a
> version that was current at the time glibc-2.8 was released. Ditto for
> the compiler and the kernel headers.
>
> Quote of the day:
>     Friends don't let friends build toolchains
>     with disparate component versions.
>
> Regards,
> Yann E. MORIN.
>
> --
> .-----------------.--------------------.------------------.--------------------.
> |  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
> | +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
> | +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
> | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
> '------------------------------^-------^------------------^--------------------'

--
For unsubscribe information see http://sourceware.org/lists.html#faq

Reply | Threaded
Open this post in threaded view
|

Re: ct-ng 1.16.0: setting glibc 2.8 cause build to fail

Yann E. MORIN-2
Zvi, All,

On Wednesday 31 October 2012 Zvi Vered wrote:
> glibc 2.8 was last modified at 26-Feb-2009.
> I must use glibc 2.8 (or earlier) because Intel Compiler does not
> support glibc 2.9 (or later).

crosstool-NG does not support the Intel Compiler (whatever that may be
(yes, I know what it is)). The only compiler supported by crosstool-NG
is gcc.

> I have to use kernel 3.2.x (or later) because this kernel contains the
> drivers I need for the PC104 chipset.
> Kernel 3.2.25 (for example) was released at: 08-Feb-2012

No, you can use /old/ kernel headers to build the toolchain, and run a
newer kernel on the target.

Of course, you loose whatever new features that were exposed to userland
since the /old/ kernel was released, but as you use an old glibc, those
features would anyway not be available to you.

Regards,
Yann E. MORIN.

--
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

--
For unsubscribe information see http://sourceware.org/lists.html#faq

Reply | Threaded
Open this post in threaded view
|

Re: ct-ng 1.16.0: setting glibc 2.8 cause build to fail

zvivered
Dear Members,

The cause to the problem is the -L argument in the link phase (with Intel
Compiler)
I must give a path to glibc libraries contained in the gcc created with
crosstool-ng.
The path was wrong and intel compiler used the libraries supplied with
default gcc in the host (Red hat 5.3, gcc 4.1.2, glibc 2.5)

Thanks,
Zvika

-----Original Message-----
From: Yann E. MORIN
Sent: Wednesday, October 31, 2012 1:52 AM
To: Zvi Vered
Cc: [hidden email]
Subject: Re: ct-ng 1.16.0: setting glibc 2.8 cause build to fail

Zvi, All,

On Wednesday 31 October 2012 Zvi Vered wrote:
> glibc 2.8 was last modified at 26-Feb-2009.
> I must use glibc 2.8 (or earlier) because Intel Compiler does not
> support glibc 2.9 (or later).

crosstool-NG does not support the Intel Compiler (whatever that may be
(yes, I know what it is)). The only compiler supported by crosstool-NG
is gcc.

> I have to use kernel 3.2.x (or later) because this kernel contains the
> drivers I need for the PC104 chipset.
> Kernel 3.2.25 (for example) was released at: 08-Feb-2012

No, you can use /old/ kernel headers to build the toolchain, and run a
newer kernel on the target.

Of course, you loose whatever new features that were exposed to userland
since the /old/ kernel was released, but as you use an old glibc, those
features would anyway not be available to you.

Regards,
Yann E. MORIN.

--
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics'
conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___
|
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is
no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v
conspiracy.  |
'------------------------------^-------^------------------^--------------------'


--
For unsubscribe information see http://sourceware.org/lists.html#faq