Das ist in Ordnung ... Aber ich möchte wissen, welche Option speziell gegeben ist, um es als * .ko wie -c für * .o oder -fpic -shared für * .so für gcc zu erstellen.
Renjith G
Ich glaube nicht, dass gcc eine solche Option hat. Entweder ist .ko nur ein anderer Name für * .a / .so oder (was wahrscheinlicher ist) es wird von einem Skript nachbearbeitet.
Maciej Piechotka
2
@Renjith G: Genau wie ein erstellt .kowird, kann sich von Kernel-Release zu Kernel-Release ändern. Die einzige Möglichkeit, um sicherzustellen, dass Sie mit dem Kernel arbeiten, besteht darin, die Makefiles des Kernels zu verwenden.
Ephemient
Kannst du mir dann die Bedeutung jedes Satzes in der obigen make-Datei erklären?
Renjith G
2
Kurze Antwort: Sie können nicht. Eine .ko-Datei ist mehr als nur eine kompilierte Version Ihrer Treiberquelle. Das Kernel-Build-System enthält beispielsweise einige zusätzliche Informationen (Compiler-Version, Modulabhängigkeiten, ...).
Sie können wahrscheinlich das Kernel-Build-System durchsuchen, um alle erforderlichen Vorgänge zu finden, sollten dies jedoch nicht. Es wird mit ziemlicher Sicherheit mit der nächsten Kernel-Version oder der darauf folgenden brechen. Sie sollten den mitgelieferten Makefile-Ephemient verwenden.
Antworten:
Erstellen Sie eine
Makefile
solche.Angenommen, die Quelle Ihres Moduls befindet sich in
mymodule.c
, wird durch Ausführenmake
erstelltmymodule.ko
.quelle
.ko
wird, kann sich von Kernel-Release zu Kernel-Release ändern. Die einzige Möglichkeit, um sicherzustellen, dass Sie mit dem Kernel arbeiten, besteht darin, die Makefiles des Kernels zu verwenden.Kurze Antwort: Sie können nicht. Eine .ko-Datei ist mehr als nur eine kompilierte Version Ihrer Treiberquelle. Das Kernel-Build-System enthält beispielsweise einige zusätzliche Informationen (Compiler-Version, Modulabhängigkeiten, ...).
Sie können wahrscheinlich das Kernel-Build-System durchsuchen, um alle erforderlichen Vorgänge zu finden, sollten dies jedoch nicht. Es wird mit ziemlicher Sicherheit mit der nächsten Kernel-Version oder der darauf folgenden brechen. Sie sollten den mitgelieferten Makefile-Ephemient verwenden.
quelle