brauche hilfe zum Arbeiten mit Makefile

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
stefx
Beiträge: 6
Registriert: 15.10.2009 17:37:54

brauche hilfe zum Arbeiten mit Makefile

Beitrag von stefx » 15.10.2009 18:07:24

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

ben.a
Beiträge: 372
Registriert: 12.04.2007 18:42:57

Re: brauche hilfe zum Arbeiten mit Makefile

Beitrag von ben.a » 15.10.2009 19:29:55

du legst makefile und quellcode in ein verzeichnis. dann wechselst du mit der konsole in dieses verzeichnis und fuehrst

Code: Alles auswählen

$ make

aus.
eventuell noch ein

Code: Alles auswählen

$ make install
hinterher, das wahrscheinlich als root ausgefuehrt werden muss.

eigentlich sollte aber eine anleitung zum installieren dabeisein. wo hast du denn das zeug gefunden?

ben

stefx
Beiträge: 6
Registriert: 15.10.2009 17:37:54

Re: brauche hilfe zum Arbeiten mit Makefile

Beitrag von stefx » 15.10.2009 21:33:58

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

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: brauche hilfe zum Arbeiten mit Makefile

Beitrag von Meillo » 15.10.2009 22:02:43

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.
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.
Ich weiß nicht ob es nötig war, aber dann habe ich Makefile ausführbar gemacht (chmod 755 Makefile)
Ist nicht nötig.
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?
Kam eine Meldung, dass `make' nicht gefunden wurde?

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!

stefx
Beiträge: 6
Registriert: 15.10.2009 17:37:54

Re: brauche hilfe zum Arbeiten mit Makefile

Beitrag von stefx » 16.10.2009 10:49:46

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

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: brauche hilfe zum Arbeiten mit Makefile

Beitrag von Meillo » 16.10.2009 11:26:59

stefx hat geschrieben:hier ist die Ausgabe von make:
debian:~/lenovo-sl-laptop# make
make: Für das Ziel »all« ist nichts zu tun.
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.
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
Nein, mit dem Kommando werden nur die Pakete angezeigt in denen die passenden Header enthalten sind.

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!

stefx
Beiträge: 6
Registriert: 15.10.2009 17:37:54

Re: brauche hilfe zum Arbeiten mit Makefile

Beitrag von stefx » 16.10.2009 11:56:05

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

chrisbra
Beiträge: 122
Registriert: 19.10.2005 09:36:09
Wohnort: Sachsen-Anhalt
Kontaktdaten:

Re: brauche hilfe zum Arbeiten mit Makefile

Beitrag von chrisbra » 16.10.2009 20:48:58

stefx 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.
Poste doch mal das Makefile
Meine Whishlist
:wq!

Spasswolf
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

Beitrag von Spasswolf » 16.10.2009 21:08:09

Das Makefile findet sich hier: http://github.com/tetromino/lenovo-sl-laptop
Ist ein ganz normale Standard Kernelmodul Makefile und funktioniert (hier) auch.

Benutzeravatar
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

Beitrag von habakug » 16.10.2009 23:46:07

Hallo!

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)
Ich gehe hierbei davon aus das "git" installiert ist (apt-get install git). Installiere doch mal. um sicherzugehen, den Modul-Assistenten:

Code: Alles auswählen

apt-get install module-assistant
m-a prepare
Gruß, habakug
( # = root | $ = user | !! = mod ) (Vor der PN) (Debianforum-Wiki) (NoPaste)

Spasswolf
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

Beitrag von Spasswolf » 17.10.2009 09:58:53

Ich gehe hierbei davon aus das "git" installiert ist (apt-get install git).
Vorsicht! git ist in Lenny ein Übergangspaket für die GNU Interactive Tools. Das Quellcodeverwaltungsprogramm heißt Debiangit-core.

Benutzeravatar
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

Beitrag von habakug » 17.10.2009 10:23:02

Hallo!

@Spasswolf
Danke für den wichtigen Hinweis. Ich meine natürlich den "stupid content tracker" git der im Paket Debiangit-core enthalten ist.

Gruß, habakug
( # = root | $ = user | !! = mod ) (Vor der PN) (Debianforum-Wiki) (NoPaste)

stefx
Beiträge: 6
Registriert: 15.10.2009 17:37:54

Re: brauche hilfe zum Arbeiten mit Makefile

Beitrag von stefx » 17.10.2009 12:35:03

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

Benutzeravatar
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

Beitrag von habakug » 17.10.2009 13:15:12

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
( # = root | $ = user | !! = mod ) (Vor der PN) (Debianforum-Wiki) (NoPaste)

Antworten