Difference between revisions of "Kernel Build"

From LinuxMIPS
Jump to: navigation, search
(Document early build errors)
Line 13: Line 13:
 
should never be defined by the application itself.  The precense of such kludgery usually indicates the use of a toolchain that wasn't configured for a Linux/MIPS target
 
should never be defined by the application itself.  The precense of such kludgery usually indicates the use of a toolchain that wasn't configured for a Linux/MIPS target
  
== ld dies with signal 6 ==
+
== Ld dies with signal 6 ==
  
 
   collect2: ld terminated with signal 6 [Aborted]
 
   collect2: ld terminated with signal 6 [Aborted]
  
 
This is a known bug in some ''very'' old binutils versions.  You will have to upgrade to at least binutils 2.8.1 plus very current patches.  With Linux 2.4 or newer binutils 2.13.2.1 or newer is probably recommended.
 
This is a known bug in some ''very'' old binutils versions.  You will have to upgrade to at least binutils 2.8.1 plus very current patches.  With Linux 2.4 or newer binutils 2.13.2.1 or newer is probably recommended.
 +
 +
== Linux 2.6 build fails early ==
 +
 +
<code>
 +
  $ make
 +
  CHK    include/linux/version.h
 +
  HOSTCC  scripts/basic/fixdep
 +
  HOSTCC  scripts/basic/split-include
 +
  HOSTCC  scripts/basic/docproc
 +
  CC      scripts/mod/empty.o
 +
  gcc: cannot specify -o with -c or -S and multiple compilations
 +
  make[2]: *** [scripts/mod/empty.o] Error 1
 +
  make[1]: *** [scripts/mod] Error 2
 +
  make: *** [scripts] Error 2
 +
</code>
 +
 +
There are two possible causes for this failure known:
 +
* Make sure you have set CONFIG_CROSSCOMPILE or add <code>CROSS_COMPILE=<[[Endianess#GNU_Configuration_Names|target]]></code> to the make invocation.
 +
* A few early Linux&nbsp;2.6 kernels had a bug which would always result in this error message.  In this case you really should upgrade.

Revision as of 20:49, 17 November 2004

Problems caused by non-Linux/MIPS toolchain

  make[1]: Entering directory `/usr/src/linux-mips/arch/mips/kernel' mips_4KC-gcc 
  -D__ASSEMBLY__ -D__KERNEL__ -I/usr/eldk/usr/src/linux-mips/include
  -D_MIPS_SZLONG=32 -D_MIPS_SZPTR=32 -D_MIPS_SZINT=32  -g -G 0 -mno-abicalls
  -fno-pic -pipe   -c -o entry.o entry.S

  entry.S: Assembler messages:
  entry.S:225: Error: unrecognized opcode `reg_s $8,164($29)'
  entry.S:226: Error: unrecognized opcode `reg_s $8,164($29)'

_MIPS_SZLONG etc. are normally defined by the gcc compiler driver. That is they should never be defined by the application itself. The precense of such kludgery usually indicates the use of a toolchain that wasn't configured for a Linux/MIPS target

Ld dies with signal 6

  collect2: ld terminated with signal 6 [Aborted]

This is a known bug in some very old binutils versions. You will have to upgrade to at least binutils 2.8.1 plus very current patches. With Linux 2.4 or newer binutils 2.13.2.1 or newer is probably recommended.

Linux 2.6 build fails early

  $ make
  CHK     include/linux/version.h
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/basic/split-include
  HOSTCC  scripts/basic/docproc
  CC      scripts/mod/empty.o
  gcc: cannot specify -o with -c or -S and multiple compilations
  make[2]: *** [scripts/mod/empty.o] Error 1
  make[1]: *** [scripts/mod] Error 2
  make: *** [scripts] Error 2

There are two possible causes for this failure known:

  • Make sure you have set CONFIG_CROSSCOMPILE or add CROSS_COMPILE=<target> to the make invocation.
  • A few early Linux 2.6 kernels had a bug which would always result in this error message. In this case you really should upgrade.