Hi. When I change something in the kernel and just hit make from toplevel dir, it always compiles everything again, no matter if it wasn't changed at all in the meantime. I thought make should be able to make a second build time really quick. What am I doing wrong? Is there a make target I don't know of? I don't type in any, just make. thanks, martin
When I change something in the kernel and just hit make from toplevel dir, it always compiles everything again, no matter if it wasn't changed at all in the meantime. I thought make should be able to make a second build time really quick. What am I doing wrong? Is there a make target I don't know of? I don't type in any, just make.
Are you sure it rebuilds _everything_, i.e. as in a fresh build or after a "make clean?" When I rerun make without changing anything, it just does the following, which is much Less than a complete build: $ make make -C /root/views/DCUOS_3/derived/tdc/kernel O=/root/views/DCUOS_3/derived/tdc/kernelObjects/. Using /root/views/DCUOS_3/derived/tdc/kernel as source for kernel GEN /root/views/DCUOS_3/derived/tdc/kernelObjects/Makefile CHK include/linux/version.h CHK include/linux/utsrelease.h SYMLINK include/asm -> include/asm-x86 CALL /root/views/DCUOS_3/derived/tdc/kernel/scripts/checksyscalls.sh CHK include/linux/compile.h VDSOSYM arch/x86/vdso/vdso32-int80-syms.lds VDSOSYM arch/x86/vdso/vdso32-sysenter-syms.lds VDSOSYM arch/x86/vdso/vdso32-syms.lds LD arch/x86/vdso/built-in.o LD arch/x86/built-in.o LD vmlinux.o MODPOST vmlinux.o GEN .version CHK include/linux/compile.h UPD include/linux/compile.h CC init/version.o LD init/built-in.o LD .tmp_vmlinux1 KSYM .tmp_kallsyms1.S AS .tmp_kallsyms1.o LD .tmp_vmlinux2 KSYM .tmp_kallsyms2.S AS .tmp_kallsyms2.o LD vmlinux SYSMAP System.map SYSMAP .tmp_System.map VOFFSET arch/x86/boot/voffset.h OBJCOPY arch/x86/boot/compressed/vmlinux.bin GZIP arch/x86/boot/compressed/vmlinux.bin.gz MKPIGGY arch/x86/boot/compressed/piggy.S AS arch/x86/boot/compressed/piggy.o LD arch/x86/boot/compressed/vmlinux ZOFFSET arch/x86/boot/zoffset.h AS arch/x86/boot/header.o CC arch/x86/boot/version.o LD arch/x86/boot/setup.elf OBJCOPY arch/x86/boot/setup.bin OBJCOPY arch/x86/boot/vmlinux.bin BUILD arch/x86/boot/bzImage Root device is (8, 5) Setup is 11148 bytes (padded to 11264 bytes). System is 1759 kB CRC f583db84 Kernel: arch/x86/boot/bzImage is ready (#3) Building modules, stage 2. MODPOST 1 modules
On Thu, Jul 4, 2013 at 9:53 AM, Warlich, Christof < christof.warlich@siemens.com> wrote:
When I change something in the kernel and just hit make from toplevel dir, it always compiles everything again, no matter if it wasn't changed at all in the meantime. I thought make should be able to make a second build time really quick. What am I doing wrong? Is there a make target I don't know of? I don't type in any, just make.
Are you sure it rebuilds _everything_, i.e. as in a fresh build or after a "make clean?"
When I rerun make without changing anything, it just does the following, which is much Less than a complete build:
$ make make -C /root/views/DCUOS_3/derived/tdc/kernel O=/root/views/DCUOS_3/derived/tdc/kernelObjects/. Using /root/views/DCUOS_3/derived/tdc/kernel as source for kernel GEN /root/views/DCUOS_3/derived/tdc/kernelObjects/Makefile CHK include/linux/version.h CHK include/linux/utsrelease.h SYMLINK include/asm -> include/asm-x86 CALL /root/views/DCUOS_3/derived/tdc/kernel/scripts/checksyscalls.sh CHK include/linux/compile.h VDSOSYM arch/x86/vdso/vdso32-int80-syms.lds VDSOSYM arch/x86/vdso/vdso32-sysenter-syms.lds VDSOSYM arch/x86/vdso/vdso32-syms.lds LD arch/x86/vdso/built-in.o LD arch/x86/built-in.o LD vmlinux.o MODPOST vmlinux.o GEN .version CHK include/linux/compile.h UPD include/linux/compile.h CC init/version.o LD init/built-in.o LD .tmp_vmlinux1 KSYM .tmp_kallsyms1.S AS .tmp_kallsyms1.o LD .tmp_vmlinux2 KSYM .tmp_kallsyms2.S AS .tmp_kallsyms2.o LD vmlinux SYSMAP System.map SYSMAP .tmp_System.map VOFFSET arch/x86/boot/voffset.h OBJCOPY arch/x86/boot/compressed/vmlinux.bin GZIP arch/x86/boot/compressed/vmlinux.bin.gz MKPIGGY arch/x86/boot/compressed/piggy.S AS arch/x86/boot/compressed/piggy.o LD arch/x86/boot/compressed/vmlinux ZOFFSET arch/x86/boot/zoffset.h AS arch/x86/boot/header.o CC arch/x86/boot/version.o LD arch/x86/boot/setup.elf OBJCOPY arch/x86/boot/setup.bin OBJCOPY arch/x86/boot/vmlinux.bin BUILD arch/x86/boot/bzImage Root device is (8, 5) Setup is 11148 bytes (padded to 11264 bytes). System is 1759 kB CRC f583db84 Kernel: arch/x86/boot/bzImage is ready (#3) Building modules, stage 2. MODPOST 1 modules _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Am also pretty sure it does not compile everything.
On 04.07.2013 11:13, David kiarie wrote:
On Thu, Jul 4, 2013 at 9:53 AM, Warlich, Christof <christof.warlich@siemens.com <mailto:christof.warlich@siemens.com>> wrote:
> When I change something in the kernel and just hit make from toplevel > dir, it always compiles everything again, no matter if it wasn't changed > at all in the meantime. > I thought make should be able to make a second build time really quick. > What am I doing wrong? Is there a make target I don't know of? I don't > type in any, just make.
Are you sure it rebuilds _everything_, i.e. as in a fresh build or after a "make clean?"
When I rerun make without changing anything, it just does the following, which is much Less than a complete build:
$ make make -C /root/views/DCUOS_3/derived/tdc/kernel O=/root/views/DCUOS_3/derived/tdc/kernelObjects/. Using /root/views/DCUOS_3/derived/tdc/kernel as source for kernel GEN /root/views/DCUOS_3/derived/tdc/kernelObjects/Makefile CHK include/linux/version.h CHK include/linux/utsrelease.h SYMLINK include/asm -> include/asm-x86 CALL /root/views/DCUOS_3/derived/tdc/kernel/scripts/checksyscalls.sh CHK include/linux/compile.h VDSOSYM arch/x86/vdso/vdso32-int80-syms.lds VDSOSYM arch/x86/vdso/vdso32-sysenter-syms.lds VDSOSYM arch/x86/vdso/vdso32-syms.lds LD arch/x86/vdso/built-in.o LD arch/x86/built-in.o LD vmlinux.o MODPOST vmlinux.o GEN .version CHK include/linux/compile.h UPD include/linux/compile.h CC init/version.o LD init/built-in.o LD .tmp_vmlinux1 KSYM .tmp_kallsyms1.S AS .tmp_kallsyms1.o LD .tmp_vmlinux2 KSYM .tmp_kallsyms2.S AS .tmp_kallsyms2.o LD vmlinux SYSMAP System.map SYSMAP .tmp_System.map VOFFSET arch/x86/boot/voffset.h OBJCOPY arch/x86/boot/compressed/vmlinux.bin GZIP arch/x86/boot/compressed/vmlinux.bin.gz MKPIGGY arch/x86/boot/compressed/piggy.S AS arch/x86/boot/compressed/piggy.o LD arch/x86/boot/compressed/vmlinux ZOFFSET arch/x86/boot/zoffset.h AS arch/x86/boot/header.o CC arch/x86/boot/version.o LD arch/x86/boot/setup.elf OBJCOPY arch/x86/boot/setup.bin OBJCOPY arch/x86/boot/vmlinux.bin BUILD arch/x86/boot/bzImag Setup is 11148 bytes (padded to 11264 bytes). System is 1759 kB CRC f583db84 Kernel: arch/x86/boot/bzImage is ready (#3) Building modules, stage 2. MODPOST 1 modules _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org <mailto:Kernelnewbies@kernelnewbies.org> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Am also pretty sure it does not compile everything.
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
indeed it doesn't compile everything but a lot (or all?) modules for example. A build with very little changes lasts more than half the time a fresh clean build lasts. But I don't seem to do anything wrong then, just wanted to check if I can do something about it. thanks!! martin
On Thu, 04 Jul 2013 08:33:00 +0200, Martin Kepplinger said:
When I change something in the kernel and just hit make from toplevel dir, it always compiles everything again, no matter if it wasn't changed at all in the meantime.
It *really* depends on which CONFIG_ variable you change. If you change some CONFIG_ variables like the ones that control whether a specific module is built, the rebuild may in fact only compile 1 or 2 .c files and link the module into a .ko and be done. Maybe a few more if you have /proc/config.gz enabled, because then it has to rebuild and relink the data for that into the kernel. THe gotcha is that changing other CONFIG_ variables can result in almost everything being rebuilt - for instance, if you change a CONFIG_ that controls a #ifdef in sched.h or one of the base networking headers, that will cause a recompile of everything that includes that .h (and pretty much everybody and their pet llama ends up including sched.h indirectly).
Hi Martin, You can pass the name of the target to the make for building only the specified files and objects. Suppose, if I changed some modifications in storage files, then I need to do make as shown below, from the top level directory i.e. /usr/src/<linux-kernel>/ make M=drivers/usb/storage I hope this helps to you. I got the same problem earlier and I fixed like this. Thank you, Regards, Srinivas On Thu, Jul 4, 2013 at 12:03 PM, Martin Kepplinger <martink@posteo.de>wrote:
Hi.
When I change something in the kernel and just hit make from toplevel dir, it always compiles everything again, no matter if it wasn't changed at all in the meantime. I thought make should be able to make a second build time really quick. What am I doing wrong? Is there a make target I don't know of? I don't type in any, just make.
thanks,
martin
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
On Tue, 09 Jul 2013 13:16:53 +0530, Srinivas Ganji said:
You can pass the name of the target to the make for building only the specified files and objects. Suppose, if I changed some modifications in storage files, then I need to do make as shown below, from the top level directory i.e. /usr/src/<linux-kernel>/
make M=drivers/usb/storage
I hope this helps to you. I got the same problem earlier and I fixed like this.
This is good for testing, but do *not* bet on this producing a working kernel. It's possible to build a module that doesn't match the rest of your kernel, resulting in hard-to-debug oopses.
participants (5)
-
David kiarie -
Martin Kepplinger -
Srinivas Ganji -
Valdis.Kletnieks@vt.edu -
Warlich, Christof