Gå til innhold

Hjelp til kompilering.


Anbefalte innlegg

Jeg skal kjøre make på en LCD driver på linux, men jeg får en feilmelding. Siden jeg ikke er så rå på verken linux eller c/c++ så spør jeg her.

 

Hva er feil?

 

Feilmeldinga ser sånn ut:

(cd driver; make)

make[1]: Entering directory `/usr/share/cajun/contrib/lcd/lcd/driver'

gcc -DKERNEL21 -D__KERNEL__ -I/usr/src/linux/include -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -pipe -ffixed-8 -DMODULE -DMODVERSIONS -include /usr/src/linux/include/linux/modversions.h -c lcd_module.c -o lcd.o

lcd_module.c:1:13: /usr/src/linux/include/linux/modversions.h: Ingen slik fil eller filkatalog

In file included from lcd_module.c:13:

/usr/include/string.h:37: parse error before `?'

/usr/include/string.h:55: parse error before `?'

lcd_module.c: In function `init_module':

lcd_module.c:585: warning: initialization from incompatible pointer type

lcd_module.c:585: warning: initialization from incompatible pointer type

lcd_module.c:586: warning: initialization from incompatible pointer type

lcd_module.c:586: warning: initialization from incompatible pointer type

make[1]: *** [lcd] Error 1

make[1]: Leaving directory `/usr/share/cajun/contrib/lcd/lcd/driver'

make: *** [all] Error 2

Lenke til kommentar
Videoannonse
Annonse

Han finner ikke /usr/src/linux/include/linux/modversions.h

Kan ha noe med at du ønsker å innstalere en driver som ikke er skrevet for den kernelen du har ?

Det du kan gjøre er å finne filen den ber om å legge den der "den skal være".

 

Lykke til :smile:

Lenke til kommentar

Lurer litt på om han kun kompilerer driveren, eller om han faktisk kjører kompileringen drivere blant kildekoden til kjernens slik man skal.

 

Kunne du fortalt oss nøyaktig hva du har gjort i forkant til kompileringen, versjoner av drivere og kernel ?

Lenke til kommentar

Dette er en driver som gjør at jeg kan bruke et standard HD44780 kompatibelt LCD display på Lpt porten som en Matrix Orbital LCD (som vanligvis er på com porten). Jeg skal bruke den i forbindelse med cajun. Dette kjører jeg på en relativt strippa RedHat 7.2 (2.4.7)

 

Utdrag fra README:

 

Installation / compilation

--------------------------

1. choose the correct definition for Kernel 2.0.* or Kernel 2.1.* (use

-DKERNEL21 for Kernel 2.2.* too).

2. edit the port address of the used parallel port in 'hardware.h' !

3. choose the correct number of lines and columns in 'hardware,h' !

 

Now just type 'make' to build the module.

 

 

Betyr dette at den ikke kan brukes med 2.4.* kjerna?

Lenke til kommentar

Quote:


Den 2002-06-28 13:25, t_man skrev:

Han finner ikke /usr/src/linux/include/linux/modversions.h

Kan ha noe med at du ønsker å innstalere en driver som ikke er skrevet for den kernelen du har ?

Det du kan gjøre er å finne filen den ber om å legge den der "den skal være".


Lykke til :smile:



 

Har prøvd å legge fila der, men får jeg denne:

 

(cd driver; make)

make[1]: Entering directory `/usr/share/cajun/contrib/lcd/lcd/driver'

gcc -DKERNEL21 -D__KERNEL__ -I/usr/src/linux/include -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -pipe -ffixed-8 -DMODULE -DMODVERSIONS -include /usr/src/linux/include/linux/modversions.h -c lcd_module.c -o lcd.o

In file included from lcd_module.c:1:

/usr/src/linux/include/linux/modversions.h:1:2: #error Modules should never use kernel-headers system headers,

/usr/src/linux/include/linux/modversions.h:2:2: #error but rather headers from an appropriate kernel-source package.

/usr/src/linux/include/linux/modversions.h:3:2: #error Change -I/usr/src/linux/include (or similar) to

/usr/src/linux/include/linux/modversions.h:4:2: #error -I/lib/modules/$(uname -r)/build/include

/usr/src/linux/include/linux/modversions.h:5:2: #error to build against the currently-running kernel.

In file included from lcd_module.c:13:

/usr/include/string.h:37: parse error before `?'

/usr/include/string.h:55: parse error before `?'

lcd_module.c: In function `init_module':

lcd_module.c:585: warning: initialization from incompatible pointer type

lcd_module.c:585: warning: initialization from incompatible pointer type

lcd_module.c:586: warning: initialization from incompatible pointer type

lcd_module.c:586: warning: initialization from incompatible pointer type

make[1]: *** [lcd] Error 1

make[1]: Leaving directory `/usr/share/cajun/contrib/lcd/lcd/driver'

make: *** [all] Error 2

 

 

Noen forslag?

Lenke til kommentar

Quote:




Installation / compilation

--------------------------

1. choose the correct definition for Kernel 2.0.* or Kernel 2.1.* (use

-DKERNEL21 for Kernel 2.2.* too).

2. edit the port address of the used parallel port in 'hardware.h' !

3. choose the correct number of lines and columns in 'hardware,h' !


Now just type 'make' to build the module.



Betyr dette at den ikke kan brukes med 2.4.* kjerna?



Det kan den sikkert. Men du mangler et kjernekildekodetre i /usr/src.

 

mathiasm@marwin:/usr/src>ls -l

total 22

-rw-r--r-- 1 root root 16758 Oct 5 2001 config

lrwxrwxrwx 1 root src 12 Jan 24 19:10 linux -> linux-2.4.17

drwxr-xr-x 14 mathiasm mathiasm 720 Oct 18 2001 linux-2.4.10

drwxr-xr-x 14 573 573 720 Mar 19 01:45 linux-2.4.17

 

 

mathiasm@marwin:/usr/src>ls /usr/src/linux/include/linux/modversions.h

/usr/src/linux/include/linux/modversions.h

Lenke til kommentar

Quote:


Den 2002-06-28 15:09, dasspapir skrev:

Dette blei jeg ikke mye klokere av.. Forklar?


Legg kildekoden til den kjørende kjernen din i "/usr/src/linux-2.4.X", der X er versjonsnumret. Gjør så en 'ln -s /usr/src/linux-2.4.X /usr/src/linux'.

 

Prøv nå å kompiler.

Lenke til kommentar

Får da dette når jeg kjører make:

 

(cd driver; make)

make[1]: Entering directory `/usr/share/cajun/contrib/lcd/lcd/driver'

gcc -DKERNEL21 -D__KERNEL__ -I/usr/src/linux/include -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -pipe -ffixed-8 -DMODULE -DMODVERSIONS -include /usr/src/linux/include/linux/modversions.h -c lcd_module.c -o lcd.o

In file included from lcd_module.c:13:

/usr/include/string.h:37: parse error before `?'

/usr/include/string.h:55: parse error before `?'

In file included from /usr/include/string.h:360,

from lcd_module.c:13:

/usr/include/bits/string2.h: In function `__strsep_g':

/usr/include/bits/string2.h:1160: warning: implicit declaration of function `strpbrk'

/usr/include/bits/string2.h:1160: warning: pointer/integer type mismatch in conditional expression

/usr/include/bits/string2.h:1160: warning: pointer/integer type mismatch in conditional expression

lcd_module.c: In function `init_module':

lcd_module.c:585: warning: initialization from incompatible pointer type

lcd_module.c:585: warning: initialization from incompatible pointer type

lcd_module.c:586: warning: initialization from incompatible pointer type

lcd_module.c:586: warning: initialization from incompatible pointer type

make[1]: *** [lcd] Error 1

make[1]: Leaving directory `/usr/share/cajun/contrib/lcd/lcd/driver'

make: *** [all] Error 2

 

 

Det som la seg i /usr/src når jeg installerte kjernekilden var to mapper som heter linux-2.4.7 og linux-2.4.7-10. (oppdatert: ser nå at de er linka)

 

[ Denne Melding var redigert av: dasspapir på 2002-06-28 16:39 ]

Lenke til kommentar

Quote:


Den 2002-06-28 16:38, dasspapir skrev:

Får da dette når jeg kjører make:


(cd driver; make)

make[1]: Entering directory `/usr/share/cajun/contrib/lcd/lcd/driver'

gcc -DKERNEL21 -D__KERNEL__ -I/usr/src/linux/include -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -pipe -ffixed-8 -DMODULE -DMODVERSIONS -include /usr/src/linux/include/linux/modversions.h -c lcd_module.c -o lcd.o

In file included from lcd_module.c:13:

/usr/include/string.h:37: parse error before `?'

/usr/include/string.h:55: parse error before `?'

In file included from /usr/include/string.h:360,

from lcd_module.c:13:

/usr/include/bits/string2.h: In function `__strsep_g':

/usr/include/bits/string2.h:1160: warning: implicit declaration of function `strpbrk'

/usr/include/bits/string2.h:1160: warning: pointer/integer type mismatch in conditional expression

/usr/include/bits/string2.h:1160: warning: pointer/integer type mismatch in conditional expression

lcd_module.c: In function `init_module':

lcd_module.c:585: warning: initialization from incompatible pointer type

lcd_module.c:585: warning: initialization from incompatible pointer type

lcd_module.c:586: warning: initialization from incompatible pointer type

lcd_module.c:586: warning: initialization from incompatible pointer type

make[1]: *** [lcd] Error 1

make[1]: Leaving directory `/usr/share/cajun/contrib/lcd/lcd/driver'

make: *** [all] Error 2



Det som la seg i /usr/src når jeg installerte kjernekilden var to mapper som heter linux-2.4.7 og linux-2.4.7-10.


Er ikke denne feil: "-DKERNEL21" fra gcc? Ellers ser ikke koden bra ut. gcc rapporterer feil i koden.

Lenke til kommentar

Finn drivere som støtter din versjon av kernelen, vanligvis blir slik kode tilgjengelig ganske fort. Jeg er sikker på om du søker litt mer på nettet og njus så vil du sikkert finne ut om det er kommet, og i så fall hvor du kan hente det.

Lenke til kommentar

Merkelig at ikke flere reagerte på at det stod om linux 2.0, 2.1 og "2.2". Uansett mangler du kernel sourcen i /usr/src/linux. Og som de andre sier: skaff en sikkelig driver som stammer fra denne siden av årtusenskiftet... (sånn ca.)

 

---trøtt---

Lenke til kommentar

Quote:


Den 2002-07-01 00:18, nesquik skrev:

Merkelig at ikke flere reagerte på at det stod om linux 2.0, 2.1 og "2.2". Uansett mangler du kernel sourcen i /usr/src/linux. Og som de andre sier: skaff en sikkelig driver som stammer fra denne siden av årtusenskiftet... (sånn ca.)


---trøtt---



1. Jeg reagerte på det, takkskalduha.

2. Han sier han har lagt den der.

3. Siste 2.2 stammer vel fra denne siden av tusenårsskiftet.

4. Enig. google rundt litt og se om du finner den.

 

---me too---

Lenke til kommentar

Heia heia. Ting går tregt når man er trøtt ja.

sjekk:

nesquik@pluto:~/linux$ egrep HD44780 * -r

Documentation/Configure.help:Etrax parallel LCD (HD44780) Driver

Documentation/Configure.help:CONFIG_ETRAX_LCD_HD44780

Documentation/Configure.help: Adds support for a HD44780 controlled LCD connected to the parallel

 

Med andre ord: Finn CONFIG_ETRAX_LCD_HD44780 på grafisk meny eller skru den på manuelt og du har det du trenger.

Med andre ord: driveren ligger i standard kernel tarballen...

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...