Android x86 Kernel Compilation stops abruptly

721 Views Asked by At

I downloaded PrimeOS' kernel from https://github.com/primebook/android_kernel_common. I just need to replace a single .c file in /drivers/platform/x86. Here's what I tried doing:-

  1. Replaced .c
  2. make clean && make mrproper
  3. Copied arch//configs/android-x86_deconfig to linux source root folder as .config
  4. fakeroot make kernel -j4

The command runs but stops abruptly and the terminal shows the $ localhost as if the task is finished. Can you tell me where I went wrong.

Update Here's the place where the issue comes:-

  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/conf.o
  YACC    scripts/kconfig/zconf.tab.c
  LEX     scripts/kconfig/zconf.lex.c

..............................................................

  CC      kernel/time/timeconv.o
In file included from ./arch/x86/include/asm/string.h:3,
                 from ./include/linux/string.h:20,
                 from ./arch/x86/include/asm/page_32.h:35,
                 from ./arch/x86/include/asm/page.h:14,
                 from ./arch/x86/include/asm/thread_info.h:12,
                 from ./include/linux/thread_info.h:38,
                 from ./arch/x86/include/asm/preempt.h:7,
                 from ./include/linux/preempt.h:81,
                 from ./include/linux/spinlock.h:51,
                 from ./include/linux/mmzone.h:8,
                 from ./include/linux/gfp.h:6,
                 from ./include/linux/mm.h:10,
                 from ./include/linux/ring_buffer.h:5,
                 from kernel/trace/trace.c:15:
In function ‘ftrace_dump’,
    inlined from ‘ftrace_dump’ at kernel/trace/trace.c:8269:6:
./arch/x86/include/asm/string_32.h:325:29: warning: ‘__builtin_memset’ offset [8297, 8336] from the object at ‘iter’ is out of the bounds of referenced subobject ‘seq’ with type ‘struct trace_seq’ at offset 4176 [-Warray-bounds]
  325 | #define memset(s, c, count) __builtin_memset(s, c, count)
      |                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/trace/trace.c:8347:3: note: in expansion of macro ‘memset’
 8347 |   memset(&iter.seq, 0,
      |   ^~~~~~
  CC      kernel/time/timecounter.o

..............................................................

   AR      kernel/built-in.a
   $

Full Log: https://pastebin.com/8T3G3Uyc

So, it just comes back to $ as if the process completed at kernel/built-in.a. This is the file where every time it stops. Even if I compile the kernel without any changes, it still stops at kernel/built-in.a BTW, I am just using the source I downloaded from primebook and installed the necessary packages for recompiling the kernel. Should I be doing something else too.

UPDATE 1 I tried running make -j4 bzImage modules but this again stops at

    AR      drivers/video/built-in.a
    AR      drivers/built-in.a

Even this doesn't compile a bzImage

UPDATE 2 I tried running make kernel on a Linux source (5.4.0) and even that stops at built-in.a

UPDATE 3 I tried running make bzImage modules without -j4 and I get a new error now

    sound/soc/codecs/es8316.c:766:1: note: in expansion of macro ‘module_i2c_driver’
    766 | module_i2c_driver(es8316_i2c_driver);
    | ^~~~~~~~~~~~~~~~~
    cc1: some warnings being treated as errors
    make[3]: *** [scripts/Makefile.build:304: sound/soc/codecs/es8316.o] Error 1
    make[2]: *** [scripts/Makefile.build:544: sound/soc/codecs] Error 2
    make[1]: *** [scripts/Makefile.build:544: sound/soc] Error 2
    make: *** [Makefile:1050: sound] Error 2 

Full log: https://pastebin.com/JJeh4QTk

UPDATE 4 make bzImageworks and outputs the bzImage as expected.

1

There are 1 best solutions below

0
Noob YT On

Fix for kernel compilation stopping at make a built-in.a file

Use make bzImage or make bzImage modules instead of make kernel
Update - In my case the error was with the ES8316.c which was causing the compilation to stop. Go to your config file and delete the lines pertaining to ES8316 and the build went through successfully.

Fix for other Errors in the question

For the codec issue and for any other conflicting module, go to your config file and search for it, for eg:- i had issue with the module for ES8316. To fix it, remove the line corresponding to ES8316 in your config file or add a # infront of it. You may also try to debug the problem if you really need that driver.

Other things that you could try

  • I had gcc-9 installed and installing gcc-8 did help at times.