• [gentoo-user] How to build kernel with old binutils?

    From Grant Edwards@21:1/5 to All on Mon Oct 10 18:10:01 2022
    I regularly need to build old Linux kernels (as far back as 2.6), and
    have a variety of older versions of gcc installed and a shell script
    that knows what versions of gcc to use for what kernel versions. Using
    an old version of GCC is simple: you just specify it on the command
    line when doing the make:

    $ cd linux-3.whatever
    $ make distclean
    $ make defconfig
    $ make GCC=/usr/bin/gcc-4.3.6 modules

    After some recent updates, I now get an 'ld' failure on some old
    kernel buils. From what I've read it seems that I now need to also use
    older binutils versions, and that's got me stumped. I've tried adding LD=/path/to/ld to the make, but that appears to be ignored.

    Can somebody give a clue how to specify the binutils to be used when
    building a Linux kernel?

    Thanks...

    --
    Grant

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Alan J. Wylie@21:1/5 to Grant Edwards on Mon Oct 10 19:30:02 2022
    Grant Edwards <grant.b.edwards@gmail.com> writes:

    Can somebody give a clue how to specify the binutils to be used when
    building a Linux kernel?

    $ man binutils-config

    The binutils-config script allows you to switch between different
    versions of binutils when you have installed multiple copies (see USE=multislot). It also allows you to manage multiple cross-compiling
    targets simultaneously.

    $ binutils-config --list-profiles
    [1] arm-none-eabi-2.38 *
    [2] x86_64-pc-linux-gnu-2.38 *

    --
    Alan J. Wylie https://www.wylie.me.uk/

    Dance like no-one's watching. / Encrypt like everyone is.
    Security is inversely proportional to convenience

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Grant Edwards@21:1/5 to flzdjhmtax@wylie.me.uk on Mon Oct 10 19:40:01 2022
    On 2022-10-10, <flzdjhmtax@wylie.me.uk> (Alan J. Wylie) <flzdjhmtax@wylie.me.uk> wrote:
    Grant Edwards <grant.b.edwards@gmail.com> writes:

    Can somebody give a clue how to specify the binutils to be used when
    building a Linux kernel?

    $ man binutils-config

    The binutils-config script allows you to switch between different
    versions of binutils when you have installed multiple copies (see USE=multislot). It also allows you to manage multiple cross-compiling targets simultaneously.

    AFAICT, that changes the binutils configuraiton for the entire
    system. That's not what I want to do. I want to use specific binutils
    versions for specific make invocations. [Similar to the way can for
    gcc with "make GCC=/usr/bin/gcc-whatever".] Is there an option I
    missed that just changes the configuration only for the current shell
    session?

    --
    Grant

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Grant Edwards@21:1/5 to Alan J. Wylie on Tue Oct 11 18:20:01 2022
    On Oct 10, 2022, 12:46 PM Alan J. Wylie wrote:
    Grant Edwards <grant.b.edwards@gmail.com> wrote:
    On 2022-10-10, <flzdjhmtax@wylie.me.uk> (Alan J. Wylie) <flzdjhmtax@wylie.me.uk> wrote:
    $ man binutils-config

    [...]

    AFAICT, that changes the binutils configuraiton for the entire
    system. That's not what I want to do. I want to use specific binutils versions for specific make invocations. [...]

    Perhaps, pretend you're cross compiling? Perhaps you sort of are,
    anyway, even if just for other package versions on the same
    architecture?

    Might "crossdev" help?

    https://wiki.gentoo.org/wiki/Embedded_Handbook/General/Creating_a_cross-compiler

    $ crossdev --help
    Usage: crossdev [options] --target TARGET

    Thanks!

    That looks promising. I was somewhat aware of crossdev, but it hadn't
    occured to me to use it to to generate native toolchains with various
    versions of gcc/binutils. In my case, I wouldn't need any libc at all,
    but that shouldn't be a big problem.

    --
    Grant

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)