Beim Kompilieren des Kernels aus dem Quellcode trat ein schwerwiegender Fehler auf: zu wenige Argumente für die Funktion „part_round_stats“

Beim Kompilieren des Kernels aus dem Quellcode trat ein schwerwiegender Fehler auf: zu wenige Argumente für die Funktion „part_round_stats“

Ich versuche, den Kernel aus dem Quellcode auf dem System CentOS 7 zu kompilieren.

Die Ausgabe uname -alautet:

Linux dbn03 3.10.0-957.el7.x86_64 #1 SMP Thu Oct 4 20:48:51 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

So lade ich den Quellcode herunter und kompiliere ihn:

wget "http://vault.centos.org/7.6.1810/os/Source/SPackages/kernel-3.10.0-957.el7.src.rpm"  
rpm2cpio ./kernel-3.10.0-957.el7.src.rpm | cpio -idmv
make menuconfig
     Device Drivers 
         ->Multiple devices driver support (RAID and LVM)
             -><*> Block device as cache
make bzImage
make modules

Wie Sie sehen, habe ich gerade versucht, den Kernel mit dem Modul BCACHE zu kompilieren. Als ich jedoch die obigen Befehle ausführte, erhielt ich den folgenden Fehler:

drivers/md/bcache/request.c:675:3: warning: passing argument 2 of ‘part_round_stats’ makes integer from pointer without a cast [enabled by default]
   part_round_stats(cpu, &s->d->disk->part0);
   ^
In file included from include/linux/blkdev.h:9:0,
                 from include/linux/blktrace_api.h:4,
                 from drivers/md/bcache/bcache.h:181,
                 from drivers/md/bcache/request.c:9:
include/linux/genhd.h:408:13: note: expected ‘int’ but argument is of type ‘struct hd_struct *’
 extern void part_round_stats(struct request_queue *q, int cpu, struct hd_struct *part);
             ^
drivers/md/bcache/request.c:675:3: error: too few arguments to function ‘part_round_stats’
   part_round_stats(cpu, &s->d->disk->part0);
   ^
In file included from include/linux/blkdev.h:9:0,
                 from include/linux/blktrace_api.h:4,
                 from drivers/md/bcache/bcache.h:181,
                 from drivers/md/bcache/request.c:9:
include/linux/genhd.h:408:13: note: declared here
 extern void part_round_stats(struct request_queue *q, int cpu, struct hd_struct *part);

Es scheint, dass ich eine Warnung und einen Fehler erhalten habe.

Ich denke, ich kann die Warnung ignorieren, aber der Fehler ist fatal. Im Header der Funktion part_round_statswird deklariert, dass drei Parameter notwendig sind, während in der Datei drivers/md/bcache/request.cnur zwei Parameter an die Funktion übergeben werden part_round_stats.

Ich habe versucht, dieses Problem zu googeln, aber nichts gefunden.

Was für ein Problem habe ich hier also? Kommt dieser Fehler aus dem Linux-Quellcode? (Ich glaube nicht ...), oder ist das ein Versionsproblem? Oder unterstützt der heruntergeladene Quellcode das Modul BCACHE nicht und der Kernel-Entwickler hat einen schwerwiegenden Fehler hinterlassen?

Antwort1

Versuchen Sie stattdessen Folgendes:

rpm -ivh kernel-3.10.0-957.el7.src.rpm
cd ~/rpmbuild/SOURCES
rpmbuild -bp kernel.spec
cd ~/rpmbuild/BUILD/kernel-3.10.0-957.el7/linux-3.10.0-957.fc32.x86_64
make menuconfig
make bzImage
make modules

verwandte Informationen