Treiber kompillieren

Gohst_oc

Enthusiast
Thread Starter
Mitglied seit
25.05.2007
Beiträge
2.179
Hi.

Ich habe die Sourcecodes des Linux-Treibers für meinen Adaptec 2940U2W SCIS Controller herungergeladen.

Dabei ist auch ein Makefile.

Jetzt möchte ich den Treiber kompillieren, aber wie mache ich das?
Mit "make" ohne Parameter etc. hatte ich kein Erfolg.

Das gibts aus:

root@ubuntuBOX:/home/<username>/Desktop/aic7xxx_driver/aic7xxx-2.6# make
make: *** Keine Regel vorhanden, um das Target »/aic7xxx_seq.h«,
benötigt von »/aic7xxx_core.o«, zu erstellen. Schluss.

Vermutlich sind die Treiber zwar in Linux schon integriert, aber ich benötige den fertigen Treiber für vmWare ESXi
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
apt-get install gcc build-essential linux-header-$(uname -r)

cd aic7xxx-2.6
./configure
make && make install

So sollte es gehen ;)
 
Das make install benötigt übrigens Root-Rechte.
In diesem Wiki-Artikel steht übrigens alles dazu. Auch dass make install nicht so das Gelbe vom Ei ist. Bei Treibern und Kernelmodulen gibt es aber soweit ich weiß leider keine Alternative.

Deine Distribution wäre übrigens generell bei allen Fragen interessant.
"Linux" ist ja nicht dein Betriebssystem.

Edit: Ach, da stehts ja: ubuntu-Box
 
Naja ich dachte Make funktioniert bei allen Distris gleich.

Denkt drann, ich möchte die kompillierte Datei haben.
Und nicht etwa den Treiber in den Kernel laden.

Ist dann:

apt-get install gcc build-essential linux-header-$(uname -r)

cd aic7xxx-2.6
./configure
make && make install

nicht falsch?
Also ich meine die && make install Zeile sollte ich doch eher überspringen oder?
 
Nun, ich muss das Treiber-File haben.
Beim Hersteller fand ich nur den Sourcecode, und ich brauche eine aic7xxx.o Datei.

Diese binde ich dann in vmWare ESXi 4 ein.
 
Naja ich dachte Make funktioniert bei allen Distris gleich.

Make alleine funktioniert in den seltensten Fällen.
In deinem Fall würde dann tatsächlich ein

Code:
./configure && make

reichen, um die .o-Datei zu erhalten.
Nebenbei: .o ist eine kompilierte, nicht gelinkte c/c++-Datei.
 
Ok, den Kompiler für Ubuntu habe ich installiert.

Aber ./configure kennt er immer noch nicht.
Warum denn?
 
Bist du im richtigen Ordner? Mach mal "ls" und zeig mal was da drin ist.
 
Ich bin im Ordner wo die Dateien alle drinn sind:

root@ubuntuBOX:/home/<username>/Desktop/aic7xxx_driver/aic7xxx-2.6# ls
aic7770.c
aic79xx_proc.c
aic7xxx_core.c
aic7xxx_reg.h
cam.h
aic7770_osm.c
aic79xx.reg
aic7xxx.h
aic7xxx_reg.h_shipped
Kconfig.aic79xx
aic79xx_core.c
aic79xx_reg.h
aic7xxx_host.h
aic7xxx_reg_print.c
Kconfig.aic7xxx
aic79xx.h
aic79xx_reg.h_shipped
aic7xxx_inline.h
aic7xxx_reg_print.c_shipped
Makefile
aic79xx_host.h
aic79xx_reg_print.c
aic7xxx_osm.c
aic7xxx.seq
queue.h
aic79xx_inline.h
aic79xx_reg_print.c_shipped
aic7xxx_osm.h
aic7xxx_seq.h
README.aic79xx
aic79xx_osm.c
aic79xx.seq
aic7xxx_osm_pci.c
aic7xxx_seq.h_shipped
README.aic7xxx
aic79xx_osm.h
aic79xx_seq.h
aic7xxx_pci.c
aicasm
scsi_iu.h
aic79xx_osm_pci.c
aic79xx_seq.h_shipped
aic7xxx_pci.h
aiclib.c
scsi_message.h
aic79xx_pci.c
aic7xxx_93cx6.c
aic7xxx_proc.c
aiclib.h
Ultra160
aic79xx_pci.h
aic7xxx_93cx6.h
aic7xxx.reg
aiclib_pci.c
Das kommt wenn ich ./configure ausführe:

root@ubuntuBOX:/home/<username>/Desktop/aic7xxx_driver# cd aic7xxx-2.6
root@ubuntuBOX:/home/<username>/Desktop/aic7xxx_driver/aic7xxx-2.6# ./configure
bash: ./configure: No such file or directory

Anscheinend kennt Ubuntu den Befehle nicht. Habe aber "build-essential", also den Compiler über die Paketverwaltung installiert.
Fedora 10 kennt ./configure bei mir auch nicht...
 
Zuletzt bearbeitet:
das ist kein Befehl oder Programm, sondern eigentlich ein ausführbares Script im Treiber-Ordner, was bei dir scheinbar aber nicht dabei ist ...

Dann probier mal nur einen Make-Aufruf ;)
 
Nur make geht nicht.

Aber ich habe tatsächlich den Treiber in kompillierte Form gefunden.
Fürs nächste mal weiss ich jetzt dass ein config File dabei sein sollte.

Vielen Dank für eure Hilfen.
 
Dann nochmal zusammengefasst zum Mitschreiben:

Normalerweise ist es so, dass man in einem Quelltext ein ausführbares Skript namens configure liegen hat.
Wenn dieses per
Code:
./configure
in dem Ordner mit dem Quelltext aufgerufen wird, werden einige Dinge gecheckt (Compiler-Version, devel-Pakete etc. blabla) und in Variablen gespeichert, die nachher im Makefile landen.
Ein anschließendes
Code:
make
nutzt diese Makefile, in der alle möglichen Informationen zum Kompilieren und Linken, anschließendem Aufräumen und so weiter stehen.
Unter Debian oder Ubuntu nutzt man anschließend nicht das altbekannte
Code:
make install
(als Root), weil man dann an der Paketverwaltung vorbei installiert, sondern
Code:
checkinstall
(ebenfalls als Root). Dabei wird ein .deb-Paket erstellt und installiert.
Um, wie du jetzt, nur eine .o aus einer .c-Datei zu erstellen, kann man auch mal schauen, ob ein
Code:
gcc -c source.c
dafür ausreicht.

Und übrigens habe ich mal gehört, dass es nicht schaden soll, Readme-Files zu lesen. ;)
 
Zuletzt bearbeitet:
Unter Debian oder Ubuntu nutzt man anschließend nicht das altbekannte
Code:
make install
(als Root), weil man dann an der Paketverwaltung vorbei installiert, sondern
Code:
checkinstall
(ebenfalls als Root). Dabei wird ein .deb-Paket erstellt und installiert.

Gibt es etwas Vergleichbares bei SUSE/SLES bzw. Yast?
 
Laut Suse-Wiki gibt es nicht nur was Ähnliches, sondern genau das.

Denk aber daran, dass es eine Paketverwaltung gibt und das Selbstkompilieren auch eine manuelle Versionskontrolle und Update-Verwaltung nach sich zieht.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh