brauche hilfe zum Arbeiten mit Makefile
brauche hilfe zum Arbeiten mit Makefile
Hallo,
bei meinem thinkpad sl500 funktioniert die Helligkeitssteuerung nicht.
Im Internet habe ich eine c-datei "lenovo-sl-laptop.c" und ein passendes Makefile gefunden, mit dem das Problem behoben werden kann.
Wie gehe ich damit um, wo muss ich die Dateien ablegen und wie mache ich daraus ein fertiges Programm?
MfG stefx
bei meinem thinkpad sl500 funktioniert die Helligkeitssteuerung nicht.
Im Internet habe ich eine c-datei "lenovo-sl-laptop.c" und ein passendes Makefile gefunden, mit dem das Problem behoben werden kann.
Wie gehe ich damit um, wo muss ich die Dateien ablegen und wie mache ich daraus ein fertiges Programm?
MfG stefx
Re: brauche hilfe zum Arbeiten mit Makefile
du legst makefile und quellcode in ein verzeichnis. dann wechselst du mit der konsole in dieses verzeichnis und fuehrst
aus.
eventuell noch ein
hinterher, das wahrscheinlich als root ausgefuehrt werden muss.
eigentlich sollte aber eine anleitung zum installieren dabeisein. wo hast du denn das zeug gefunden?
ben
Code: Alles auswählen
$ make
aus.
eventuell noch ein
Code: Alles auswählen
$ make install
eigentlich sollte aber eine anleitung zum installieren dabeisein. wo hast du denn das zeug gefunden?
ben
Re: brauche hilfe zum Arbeiten mit Makefile
Hallo ben,
danke für deine schnelle Hilfe!
Gefunden habe ich es hier:
(http://www.linlap.com/wiki/lenovo+thinkpad+sl500)
http://github.com/tetromino/lenovo-sl-laptop
Die Listings habe ich in eine Datei "lenovo-sl-laptop.c" und "Makefile" kopiert und in einem Verzeichnis
"/root/lenovo-sl-laptop" abgelegt.
Ich weiß nicht ob es nötig war, aber dann habe ich Makefile ausführbar gemacht (chmod 755 Makefile)
und make aufgerufen. Danach habe ich in das Verzeichnis gewechselt und das Kommando make eingegeben.
Die Quelltextdatei wurde aber nicht übersetzt.
Kann es sein, dass ich erst "make" installieren muss?
MfG stefx
danke für deine schnelle Hilfe!
Gefunden habe ich es hier:
(http://www.linlap.com/wiki/lenovo+thinkpad+sl500)
http://github.com/tetromino/lenovo-sl-laptop
Die Listings habe ich in eine Datei "lenovo-sl-laptop.c" und "Makefile" kopiert und in einem Verzeichnis
"/root/lenovo-sl-laptop" abgelegt.
Ich weiß nicht ob es nötig war, aber dann habe ich Makefile ausführbar gemacht (chmod 755 Makefile)
und make aufgerufen. Danach habe ich in das Verzeichnis gewechselt und das Kommando make eingegeben.
Die Quelltextdatei wurde aber nicht übersetzt.
Kann es sein, dass ich erst "make" installieren muss?
MfG stefx
Re: brauche hilfe zum Arbeiten mit Makefile
Du hättest auch einfach die Links mit Namen ``raw'' nehmen können. Damit kannst du die Dateien in ihrer Orginalform abspeichern. Das aber nur als Erleichertung für's nächste Mal.stefx hat geschrieben:Die Listings habe ich in eine Datei "lenovo-sl-laptop.c" und "Makefile" kopiert und in einem Verzeichnis
"/root/lenovo-sl-laptop" abgelegt.
Ist nicht nötig.Ich weiß nicht ob es nötig war, aber dann habe ich Makefile ausführbar gemacht (chmod 755 Makefile)
Kam eine Meldung, dass `make' nicht gefunden wurde?und make aufgerufen. Danach habe ich in das Verzeichnis gewechselt und das Kommando make eingegeben.
Die Quelltextdatei wurde aber nicht übersetzt.
Kann es sein, dass ich erst "make" installieren muss?
Es kann schon sein, dass es nicht auf deinem System ist, aber dann motzt die Shell dass es keinen Befehl `make' gibt.
Hast du die Headers für deinen Kernel? (Siehe letzter Abschnitt in der README.)
Kannst das passende Paket so suchen:
Code: Alles auswählen
apt-cache search linux-headers-`uname -r`
Use ed once in a while!
Re: brauche hilfe zum Arbeiten mit Makefile
Hallo Meillo,
danke erstmal!
Bin leider noch nicht weiter gekommen:
hier ist die Ausgabe von make:
debian:~/lenovo-sl-laptop# make
make: Für das Ziel »all« ist nichts zu tun.
Die Header sind vorhanden:
debian:/usr/src/linux-headers-2.6.26-2-686/scripts# apt-cache search linux-headers-`uname -r`
linux-headers-2.6.26-2-686 - Header files for Linux 2.6.26-2-686
linux-headers-2.6.26-2-686-bigmem - Header files for Linux 2.6.26-2-686-bigmem
Gruß von stefx
danke erstmal!
Bin leider noch nicht weiter gekommen:
hier ist die Ausgabe von make:
debian:~/lenovo-sl-laptop# make
make: Für das Ziel »all« ist nichts zu tun.
Die Header sind vorhanden:
debian:/usr/src/linux-headers-2.6.26-2-686/scripts# apt-cache search linux-headers-`uname -r`
linux-headers-2.6.26-2-686 - Header files for Linux 2.6.26-2-686
linux-headers-2.6.26-2-686-bigmem - Header files for Linux 2.6.26-2-686-bigmem
Gruß von stefx
Re: brauche hilfe zum Arbeiten mit Makefile
Make macht nur was wenn es was zu tun gibt, das war bei ersten Mal als du make aufgerufen hast. Wenn du willst, dass make erneut arbeitet, musst zu zuerst alle Erzeugnisse wieder entfernen (mit `make clean'). Danach kannst du `make' aufrufen, dann wird wieder was erzeugt. Poste am besten Mal die Ausgabe, wenn's nicht zu viel ist. Oder sag uns zumindest ob es fehlerfrei durchläuft. Das sollte anhand der letzten Zeilen der Ausgabe ersichtlich sein.stefx hat geschrieben:hier ist die Ausgabe von make:
debian:~/lenovo-sl-laptop# make
make: Für das Ziel »all« ist nichts zu tun.
Nein, mit dem Kommando werden nur die Pakete angezeigt in denen die passenden Header enthalten sind.Die Header sind vorhanden:
debian:/usr/src/linux-headers-2.6.26-2-686/scripts# apt-cache search linux-headers-`uname -r`
linux-headers-2.6.26-2-686 - Header files for Linux 2.6.26-2-686
linux-headers-2.6.26-2-686-bigmem - Header files for Linux 2.6.26-2-686-bigmem
Du musst sie dann mit `sudo apt-get install linux-headers-2.6.26-2-686' noch installieren.
Also: Erst mal die Header installieren, dann `make clean', dann `make'.
Wenn das alles erfolgreich ist, dann hast du das Kernel-Modul erstellt. Dieses musst du dann noch in den Kernel laden (Stichwort `insmod' bzw. `modprobe'). Schau dazu mal in die README, da steht das grob drin. Schau dir auch mal ein Tutorial zum Einfügen von Kernelmodulen an (gibt's glaub auch was hier im Wiki), damit du grob weißt um was es geht.
Wenn's dann nicht funktioniert, frag wieder.
(Ich kenne mich halt mit Kernel-Modulen nur grundlegend aus. Aber es gibt ja noch andere hier die da Profis sind.)
Use ed once in a while!
Re: brauche hilfe zum Arbeiten mit Makefile
Hallo Meillo,
ich habe das eben ausprobiert, leider ohne Erfolg. Hier ist die Ausgabe:
debian:~/lenovo-sl-laptop# sudo apt-get install linux-headers-2.6.26-2-686
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut
Lese Status-Informationen ein... Fertig
linux-headers-2.6.26-2-686 ist schon die neueste Version.
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 147 nicht aktualisiert.
debian:~/lenovo-sl-laptop# make clean
make: Für das Ziel »clean« ist nichts zu tun.
debian:~/lenovo-sl-laptop# make
make: Für das Ziel »all« ist nichts zu tun.
debian:~/lenovo-sl-laptop# whoami
root
Gruß von stefx
ich habe das eben ausprobiert, leider ohne Erfolg. Hier ist die Ausgabe:
debian:~/lenovo-sl-laptop# sudo apt-get install linux-headers-2.6.26-2-686
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut
Lese Status-Informationen ein... Fertig
linux-headers-2.6.26-2-686 ist schon die neueste Version.
0 aktualisiert, 0 neu installiert, 0 zu entfernen und 147 nicht aktualisiert.
debian:~/lenovo-sl-laptop# make clean
make: Für das Ziel »clean« ist nichts zu tun.
debian:~/lenovo-sl-laptop# make
make: Für das Ziel »all« ist nichts zu tun.
debian:~/lenovo-sl-laptop# whoami
root
Gruß von stefx
Re: brauche hilfe zum Arbeiten mit Makefile
Poste doch mal das Makefilestefx hat geschrieben:debian:~/lenovo-sl-laptop# make clean
make: Für das Ziel »clean« ist nichts zu tun.
debian:~/lenovo-sl-laptop# make
make: Für das Ziel »all« ist nichts zu tun.
Meine Whishlist
:wq!
:wq!
-
- Beiträge: 3472
- Registriert: 30.11.2005 10:32:22
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Wald
Re: brauche hilfe zum Arbeiten mit Makefile
Das Makefile findet sich hier: http://github.com/tetromino/lenovo-sl-laptop
Ist ein ganz normale Standard Kernelmodul Makefile und funktioniert (hier) auch.
Ist ein ganz normale Standard Kernelmodul Makefile und funktioniert (hier) auch.
- habakug
- Moderator
- Beiträge: 4314
- Registriert: 23.10.2004 13:08:41
- Lizenz eigener Beiträge: MIT Lizenz
Re: brauche hilfe zum Arbeiten mit Makefile
Hallo!
Hier funktioniert das wunderbar:
Ich gehe hierbei davon aus das "git" installiert ist (apt-get install git). Installiere doch mal. um sicherzugehen, den Modul-Assistenten:
Gruß, habakug
Hier funktioniert das wunderbar:
Code: Alles auswählen
[toots@pocaloca lenovo]# git clone git://github.com/tetromino/lenovo-sl-laptop.git
Initialized empty Git repository in /home/toots/lenovo/lenovo-sl-laptop/.git/
remote: Counting objects: 184, done.
remote: Compressing objects: 100% (183/183), done.
remote: Total 184 (delta 94), reused 0 (delta 0)
Receiving objects: 100% (184/184), 52.55 KiB, done.
Resolving deltas: 100% (94/94), done.
[toots@pocaloca lenovo]# ls
lenovo-sl-laptop
[toots@pocaloca lenovo]# cd lenovo-sl-laptop/
[toots@pocaloca lenovo-sl-laptop]# ls
lenovo-sl-laptop.c Makefile README
[toots@pocaloca lenovo-sl-laptop]# make
make -C /lib/modules/2.6.30.8.x86_64/build M=/home/toots/lenovo/lenovo-sl-laptop modules
make[1]: Entering directory `/usr/src/2.6.30.8.x86_64'
CC [M] /home/toots/lenovo/lenovo-sl-laptop/lenovo-sl-laptop.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/toots/lenovo/lenovo-sl-laptop/lenovo-sl-laptop.mod.o
LD [M] /home/toots/lenovo/lenovo-sl-laptop/lenovo-sl-laptop.ko
make[1]: Leaving directory `/usr/src/2.6.30.8.x86_64'
[root@localhost lenovo-sl-laptop]# modinfo lenovo-sl-laptop.ko
filename: lenovo-sl-laptop.ko
alias: dmi:bvnLENOVO:*:svnLENOVO*:*:pvrThinkPad SL*:rvnLENOVO:*
license: GPL
description: Lenovo ThinkPad SL Series Extras driver
author: Alexandre Rostovtsev
srcversion: 2E31B216C04589DC9D1F9D6
depends: hwmon,rfkill
vermagic: 2.6.30.8.x86_64 SMP mod_unload
parm: debug_ec:Present EC debugging interface in procfs. WARNING: writing to the EC can hang your system and possibly damage your hardware. (bool)
parm: control_backlight:Control backlight brightness; can conflict with ACPI video driver. (bool)
parm: debug:Set debug verbosity level (0 = nothing, 7 = everything). (uint)
parm: bluetooth_auto_enable:Automatically enable bluetooth (if supported by hardware) when the module is loaded. (bool)
parm: uwb_auto_enable:bool
parm: wwan_auto_enable:Automatically enable WWAN (if supported by hardware) when the module is loaded. (bool)
Code: Alles auswählen
apt-get install module-assistant
m-a prepare
-
- Beiträge: 3472
- Registriert: 30.11.2005 10:32:22
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Wald
Re: brauche hilfe zum Arbeiten mit Makefile
Vorsicht! git ist in Lenny ein Übergangspaket für die GNU Interactive Tools. Das Quellcodeverwaltungsprogramm heißt git-core.Ich gehe hierbei davon aus das "git" installiert ist (apt-get install git).
- habakug
- Moderator
- Beiträge: 4314
- Registriert: 23.10.2004 13:08:41
- Lizenz eigener Beiträge: MIT Lizenz
Re: brauche hilfe zum Arbeiten mit Makefile
Hallo!
@Spasswolf
Danke für den wichtigen Hinweis. Ich meine natürlich den "stupid content tracker" git der im Paket git-core enthalten ist.
Gruß, habakug
@Spasswolf
Danke für den wichtigen Hinweis. Ich meine natürlich den "stupid content tracker" git der im Paket git-core enthalten ist.
Gruß, habakug
Re: brauche hilfe zum Arbeiten mit Makefile
Hallo und danke für euer bisherige Hilfe!!
Ich habe mir heute morgen nochmal das Makefile geladen, diesmal von der Schaltfläche "raw" (voher hatte ich es aus der HTML-Datei kopiert)
Nun tut sich auch etwas, obwohl ich den Unterschied nicht sehen kann. Der einzige, für mich erkennbare, Unterschied in beiden Makefiles liegt darin, dass in dem funktionierenden, nach der letzten Anweisung ein einziger Zeilenumbruch folgt und in dem anderen zwei.
Hier ist das Makefile
obj-m := lenovo-sl-laptop.o
KVERSION = $(shell uname -r)
all:
$(MAKE) -C /lib/modules/$(KVERSION)/build M=$(PWD) modules
clean:
$(MAKE) -C /lib/modules/$(KVERSION)/build M=$(PWD) clean
module:
$(MAKE) -C /usr/src/linux M=$(PWD) modules
Das sind die Ausgaben mit Fehlermeldungen:
debian:~/lenovo-sl-laptop# make
make -C /lib/modules/2.6.26-2-686/build M=/root/lenovo-sl-laptop modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.26-2-686'
CC [M] /root/lenovo-sl-laptop/lenovo-sl-laptop.o
/root/lenovo-sl-laptop/lenovo-sl-laptop.c: In function ‘lensl_radio_rfkill_get_state’:
/root/lenovo-sl-laptop/lenovo-sl-laptop.c:307: error: ‘RFKILL_STATE_HARD_BLOCKED’ undeclared (first use in this function)
/root/lenovo-sl-laptop/lenovo-sl-laptop.c:307: error: (Each undeclared identifier is reported only once
/root/lenovo-sl-laptop/lenovo-sl-laptop.c:307: error: for each function it appears in.)
/root/lenovo-sl-laptop/lenovo-sl-laptop.c:315: error: ‘RFKILL_STATE_UNBLOCKED’ undeclared (first use in this function)
/root/lenovo-sl-laptop/lenovo-sl-laptop.c:317: error: ‘RFKILL_STATE_SOFT_BLOCKED’ undeclared (first use in this function)
/root/lenovo-sl-laptop/lenovo-sl-laptop.c: In function ‘lensl_radio_rfkill_toggle_radio’:
/root/lenovo-sl-laptop/lenovo-sl-laptop.c:327: error: ‘RFKILL_STATE_UNBLOCKED’ undeclared (first use in this function)
/root/lenovo-sl-laptop/lenovo-sl-laptop.c: In function ‘lensl_radio_new_rfkill’:
/root/lenovo-sl-laptop/lenovo-sl-laptop.c:361: error: ‘struct rfkill’ has no member named ‘get_state’
/root/lenovo-sl-laptop/lenovo-sl-laptop.c:366: error: ‘RFKILL_STATE_HARD_BLOCKED’ undeclared (first use in this function)
/root/lenovo-sl-laptop/lenovo-sl-laptop.c:368: error: ‘RFKILL_STATE_SOFT_BLOCKED’ undeclared (first use in this function)
/root/lenovo-sl-laptop/lenovo-sl-laptop.c:370: error: ‘RFKILL_STATE_UNBLOCKED’ undeclared (first use in this function)
/root/lenovo-sl-laptop/lenovo-sl-laptop.c: At top level:
/root/lenovo-sl-laptop/lenovo-sl-laptop.c:459: error: ‘RFKILL_TYPE_WWAN’ undeclared here (not in a function)
make[2]: *** [/root/lenovo-sl-laptop/lenovo-sl-laptop.o] Fehler 1
make[1]: *** [_module_/root/lenovo-sl-laptop] Fehler 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.26-2-686'
make: *** [all] Fehler 2
debian:~/lenovo-sl-laptop#
Grüße von stefx
Ich habe mir heute morgen nochmal das Makefile geladen, diesmal von der Schaltfläche "raw" (voher hatte ich es aus der HTML-Datei kopiert)
Nun tut sich auch etwas, obwohl ich den Unterschied nicht sehen kann. Der einzige, für mich erkennbare, Unterschied in beiden Makefiles liegt darin, dass in dem funktionierenden, nach der letzten Anweisung ein einziger Zeilenumbruch folgt und in dem anderen zwei.
Hier ist das Makefile
obj-m := lenovo-sl-laptop.o
KVERSION = $(shell uname -r)
all:
$(MAKE) -C /lib/modules/$(KVERSION)/build M=$(PWD) modules
clean:
$(MAKE) -C /lib/modules/$(KVERSION)/build M=$(PWD) clean
module:
$(MAKE) -C /usr/src/linux M=$(PWD) modules
Das sind die Ausgaben mit Fehlermeldungen:
debian:~/lenovo-sl-laptop# make
make -C /lib/modules/2.6.26-2-686/build M=/root/lenovo-sl-laptop modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.26-2-686'
CC [M] /root/lenovo-sl-laptop/lenovo-sl-laptop.o
/root/lenovo-sl-laptop/lenovo-sl-laptop.c: In function ‘lensl_radio_rfkill_get_state’:
/root/lenovo-sl-laptop/lenovo-sl-laptop.c:307: error: ‘RFKILL_STATE_HARD_BLOCKED’ undeclared (first use in this function)
/root/lenovo-sl-laptop/lenovo-sl-laptop.c:307: error: (Each undeclared identifier is reported only once
/root/lenovo-sl-laptop/lenovo-sl-laptop.c:307: error: for each function it appears in.)
/root/lenovo-sl-laptop/lenovo-sl-laptop.c:315: error: ‘RFKILL_STATE_UNBLOCKED’ undeclared (first use in this function)
/root/lenovo-sl-laptop/lenovo-sl-laptop.c:317: error: ‘RFKILL_STATE_SOFT_BLOCKED’ undeclared (first use in this function)
/root/lenovo-sl-laptop/lenovo-sl-laptop.c: In function ‘lensl_radio_rfkill_toggle_radio’:
/root/lenovo-sl-laptop/lenovo-sl-laptop.c:327: error: ‘RFKILL_STATE_UNBLOCKED’ undeclared (first use in this function)
/root/lenovo-sl-laptop/lenovo-sl-laptop.c: In function ‘lensl_radio_new_rfkill’:
/root/lenovo-sl-laptop/lenovo-sl-laptop.c:361: error: ‘struct rfkill’ has no member named ‘get_state’
/root/lenovo-sl-laptop/lenovo-sl-laptop.c:366: error: ‘RFKILL_STATE_HARD_BLOCKED’ undeclared (first use in this function)
/root/lenovo-sl-laptop/lenovo-sl-laptop.c:368: error: ‘RFKILL_STATE_SOFT_BLOCKED’ undeclared (first use in this function)
/root/lenovo-sl-laptop/lenovo-sl-laptop.c:370: error: ‘RFKILL_STATE_UNBLOCKED’ undeclared (first use in this function)
/root/lenovo-sl-laptop/lenovo-sl-laptop.c: At top level:
/root/lenovo-sl-laptop/lenovo-sl-laptop.c:459: error: ‘RFKILL_TYPE_WWAN’ undeclared here (not in a function)
make[2]: *** [/root/lenovo-sl-laptop/lenovo-sl-laptop.o] Fehler 1
make[1]: *** [_module_/root/lenovo-sl-laptop] Fehler 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.26-2-686'
make: *** [all] Fehler 2
debian:~/lenovo-sl-laptop#
Grüße von stefx
- habakug
- Moderator
- Beiträge: 4314
- Registriert: 23.10.2004 13:08:41
- Lizenz eigener Beiträge: MIT Lizenz
Re: brauche hilfe zum Arbeiten mit Makefile
Hallo!
Das Bauen des Moduls scheint erst ab Kernel 2.6.29.x zu funktionieren [1]. Du solltest auf einen neueren Kernel updaten (bpo).
Gruß, habakug
[1] http://lkml.org/lkml/2009/2/16/27
Das Bauen des Moduls scheint erst ab Kernel 2.6.29.x zu funktionieren [1]. Du solltest auf einen neueren Kernel updaten (bpo).
Gruß, habakug
[1] http://lkml.org/lkml/2009/2/16/27