asd schrieb:
> ich versuche einen Treiber für den Rapsberry Pi zu schreiben. Dafür will
> ich erst mal die Kernel-Sourcen installieren. Nach
> http://stackoverflow.com/a/29354565
> versuche ich dieses:
>
> "sudo apt-get install build-essential": war schon installiert
> "sudo apt-get install dkms": scheint man nur beim Kernelwechsel zu
> brauchen, erst mal nicht installiert
> Der Kernel ist der 3.18.11+ #781 REEMPT, die Quellen dazu gibts an der
> selben Stelle wie im Link erwähnt:
>
http://www.niksula.hut.fi/~mhiienka/Rpi/linux-headers-rpi/linux-headers-3.18.11-v7%2B_3.18.11-v7%2B-2_armhf.deb
Ausweislich des Paketnamens sind das nur die header des Kernels. Zudem
ist das eine etwas merkwürdige Quelle und der Tipp aus der Anleitung
nicht so wirklich eine gute Idee. Nimm' lieber die Pakete Deines
Distributors -- dann funktioniert auch /lib/modules/$(uname -r)/build
und ist ein Symlink auf /usr/src/linux-headers-$(uname -r).
> Das installieren mit dpkg (laut der 3. Zeile im Stackpverflow-Link) gibt
> eine Fehlermeldung:
> dpkg: error processing linux-headers-3.18.11-v7+ (--install): dependency
> problems - leaving unconfigured
>
> -> was bedeuted das und kann man das ignorieren?
Das ist nur das letzte Ende der Fehlermeldung, daß dpkg Probleme mit den
Paketabhängigkeiten hat. Im Teil davor steht, was die Ursache ist.
> um zu sehen ob der gcc denn schon auf dem System ist,
Das kann man herausfinden mit "dpkg -l '*gcc*'" oder mit "gcc --version"
-- aber wenn "build-essential" installiert ist, ist GCC auch drauf,
genau wie alles andere, was Du zum Übersetzen brauchst. Das ist
schließlich der ganze Sinn dieses Metapakets.
> dieser per apt-get installieren. Das gibt folgende Fehlermeldung:
>
> The following packages have unmet dependencies:
> linux-headers-3.18.11-v7+ : Depends: gcc-4.7 but it is not going to be
> installed
Da haben wir die Ursache: das Paket "linux-headers-3.18.11-v7+" hängt
von dem Paket "gcc-4.7" ab, aber das soll nicht installiert werden. Und
nein, Du willst das Paket "gcc-4.7" jetzt nicht händisch installieren,
sondern stattdessen das komische Paket mit "dpkg -P <paketname>"
löschen. Die Manpage von dpkg ("man dpkg"), vor allem die am Ende
verwiesene Unterseite von dpkg-query, zeigt Dir, wie Du Deine
Paketdatenbank abfragen kannst.
> E: Unmet dependencies. Try 'apt-get -f install' with no packages (or
> specify a solution).
> pi@raspberrypi /mnt/synintern/pi/151130_treiber1 $ gcc --version
> gcc (Debian 4.6.3-14+rpi1) 4.6.3
>
> -> jetzt bin ich soweit erst mal hier nachzufragen bevor ich weiter
> selber friemle. Wie bekommt man einen Treiber übersetzt? Zuerst will ich
> das anhand des ersten Beispiels aus dem Buch von Quade/Kunst: "Linux
> Treiber entwickeln" ausprobieren, Quelltexte in Anhang.
Indem man zunächst einmal die Kernelheader der eigenen Distribution
installiert ("sudo apt-get install linux-headers-$(uname -r)", aber aus
deren eigenen Repositories und nicht aus irgendwelchen dubiosen Quellen
in Finnland. Wenn Du auch noch die Kernelsourcen haben willst, kannst Du
zudem das Paket "linux-source" installieren. In beiden Fällen werden die
Header und Sourcen dann da installiert, wo sie hingehören: in /usr/src/.
Wenn das alles gemacht ist, kannst Du Deine Dateien in ein Verzeichnis
kopieren, dort in einer Shell mit "cd" hineinwechseln und dann mit
"make" die Übersetzung deines "mod1.c" beginnen. Wenn dann etwas nicht
klappt, frag' einfach nochmal. Viel Erfolg!