Strona 1 z 1

acerhk-source - kompilacja

: 13 maja 2008, 03:24
autor: thor
Pobrałem sobie z repozytorium paczkę ze źródłami modułu do obsługi klawiszy specjalnych dla Acer - acerhk-source. Próbuję ją skompilować, przeszukałem wszystko co mogłem i kończą mi się pomysły. Ale po kolei.

Kopiuję sobie tą paczkę na pulpit (dla ułatwienia działań ;) ) i dalej:

Kod: Zaznacz cały

# tar -xjvf acerhk.tar.bz2

modules/
modules/acerhk/
modules/acerhk/acerhk.c
modules/acerhk/debian/
modules/acerhk/debian/control.modules.in
modules/acerhk/debian/changelog
modules/acerhk/debian/copyright
modules/acerhk/debian/rules
modules/acerhk/debian/compat
modules/acerhk/debian/docs
modules/acerhk/README
modules/acerhk/acerhk.h
modules/acerhk/Makefile
modules/acerhk/doc/
modules/acerhk/doc/keycodes
modules/acerhk/doc/FAQ
modules/acerhk/doc/IOCTL
modules/acerhk/doc/md95400.def
modules/acerhk/doc/acertm.def
modules/acerhk/NEWS
darkstar:/home/thor/Desktop/acerhk# ls
acerhk.tar.bz2  modules
Czyli wypakowanie idzie ok, i dalej:

Kod: Zaznacz cały

darkstar:/home/thor/Desktop/acerhk# ls
acerhk.tar.bz2  modules
darkstar:/home/thor/Desktop/acerhk# cd modules
darkstar:/home/thor/Desktop/acerhk/modules# cd acerhk/
darkstar:/home/thor/Desktop/acerhk/modules/acerhk# ls
acerhk.c  acerhk.h  debian  doc  Makefile  NEWS  README
darkstar:/home/thor/Desktop/acerhk/modules/acerhk# make
I tutaj występuje problem taki że w konsoli wyskakuje nowa linia (bez znaku zachęty czy jak to się w Linuksie nazywa) i nic się nie dzieje. Przez chwilę myślałem że to kompilacja tyle trwa ale w wykazie procesów nie wykazuje mi na konsoli żadnej aktywności. Dodam że normalnie mogę wpisywać znaki z klawiatury w tej konsoli. Nie jest to więc jakiś zwis. Po naciśnięciu ctrl+c wyskakuje z powrotem do linii poleceń. Ale po kompilacji ani śladu. Jakby mi mógł ktoś krok po kroku wytłumaczyć co robię nie tak. Albo polecić jakiś dobry poradnik jak kompilować ze źródeł, tylko nie taki na zasadzie (wpisz ./configure dalej make i gra, bo takie to znalazłem w sieci bez problemu ;) ). Załączam jeszcze źródło mojego Makefile:

Kod: Zaznacz cały

# change KERNELSRC to the location of your kernel build tree only if
# autodetection does not work
#KERNELSRC=/usr/src/linux
KERNELSRC?=/lib/modules/`uname -r`/build
# Starting with 2.6.18, the kernel version is in utsrelease.h instead of version.h, accomodate both cases
KERNELVERSION=$(shell awk -F\" '/REL/ {print $$2}' $(shell grep -s -l REL $(KERNELSRC)/include/linux/version.h $(KERNELSRC)/include/linux/utsrelease.h))
KERNELMAJOR=$(shell echo $(KERNELVERSION)|head -c3)

# next line is for kernel 2.6, if you integrate the driver in the kernel tree
# /usr/src/linux/drivers/acerhk - or something similar
# don't forget to add the following line to the parent dir's Makefile:
# (/usr/src/linux/drivers/Makefile)
# obj-m                           += acerhk/
CONFIG_ACERHK?=m
obj-$(CONFIG_ACERHK) += acerhk.o

EXTRA_CFLAGS+=-c -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe
INCLUDE=-I$(KERNELSRC)/include

ifeq ($(KERNELMAJOR), 2.6)
TARGET := acerhk.ko
else
TARGET := acerhk.o
endif

SOURCE := acerhk.c

all: $(TARGET)

help:
	@echo Possible targets:
	@echo -e all\\t- default target, builds kernel module
	@echo -e install\\t- copies module binary to /lib/modules/$(KERNELVERSION)/extra/
	@echo -e clean\\t- removes all binaries and temporary files

# this target is only for me, don't use it yourself (Olaf)
export:
	sh export.sh

acerhk.ko: $(SOURCE) acerhk.h
	$(MAKE) -C $(KERNELSRC) SUBDIRS=$(PWD) modules

acerhk.o: $(SOURCE) acerhk.h
	$(CC) $(INCLUDE) $(CFLAGS) -DMODVERSIONS -DMODULE -D__KERNEL__ -o $(TARGET) $(SOURCE)

asm:	$(SOURCE)
ifeq ($(KERNELMAJOR), 2.6)
	$(CC) $(INCLUDE) $(INCLUDE)/asm-i386/mach-default $(CFLAGS) -fverbose-asm -S -DMODVERSIONS -DMODULE -D__KERNEL__ $(SOURCE)
else
	$(CC) $(INCLUDE) $(CFLAGS) -fverbose-asm -S -DMODVERSIONS -DMODULE -D__KERNEL__ $(SOURCE)
endif

clean:
	rm -f *~ *.o *.s *.ko .acerhk* *.mod.c

load:	$(TARGET)
	insmod $(TARGET)

unload:
	rmmod acerhk

install: $(TARGET)
	mkdir -p /lib/modules/$(KERNELVERSION)/extra
	cp -v $(TARGET) /lib/modules/$(KERNELVERSION)/extra/
	depmod -a
Z góry dzięki za wszelkie wskazówki i odpowiedzi.

Uprzedzając pytanie, w README nie ma nic na temat kompilacji :(

Dopiero teraz się kapnąłem, że umieściłem tego posta nie w tym temacie, przyznaje się karnie do błędu ale na usprawiedliwienie siebie napiszę, że sugerowałem się tym:
...Instalacja sterowników

• Nvidia
• ATI zamknięte (fglrx), otwarte
Opisz swój problem w dziale: Desktop ...
Takie coś znajduje się w "/Lektura Obowiązkowa/Dla początkujących", a skoro jest tam mowa o sterownikach to stwierdziłem że obsługa klawiszy specjalnych podlega pod sterowniki. :(

[ Dodano: 2008-05-13, 20:56 ]
Problemem okazał się brak pakietów:

Kod: Zaznacz cały

linux-headers-2.6.24-1-686
linux-source-2.6.24
co prawda doinstalowałem jeszcze gcc 4.1 (4.2 i 4.3 miałem) ale nie wiem na ile było to pomocne. Co do powyższych pakietów natomiast jestm pewien.
Podsumowanie: Po krótkiej walce z modułem acerhk (sprawiłem aby uruchamiał się przy starcie systemu ale dalej już mi się nie chciało z nim użerać) przypadkiem znalazłem inne rozwiązanie problemu z klawiszami specjalnymi w Fujitsu-Siemens:

W KDE z menu -> ustawienia -> regionalność i dostępność -> układ klawiatury
W okienku zaznaczasz "Włącz układy klawiatury", dodatkowo musiałem przerzucić układ PL i zlikwidowałem sobie US. Pozostaje przypisać odpowiednie funkcje do poszczególnych klawiszy. Mi chodziło głównie o regulację głośności w Kmix.

Wszystkim którzy udzieli mi pomocy serdecznie dziękuję :-x

[ Dodano: 2008-05-13, 20:57 ]
Co dalej z wątkiem pozostawiam w gestii moderatora.