# kann s2-liplianin nicht compilieren

## FrancisA

Hallo,

Vorbemerkung: habe nicht den kernel von gentoo, sondern den von kernel sources git.

```

/mnt/src/s2-liplianin/v4l/dvb_frontend.c: In function 'dvb_frontend_stop':

/mnt/src/s2-liplianin/v4l/dvb_frontend.c:718: error: implicit declaration of function 'init_MUTEX'

make[3]: *** [/mnt/src/s2-liplianin/v4l/dvb_frontend.o] Error 1

make[2]: *** [_module_/mnt/src/s2-liplianin/v4l] Error 2

make[2]: Leaving directory `/mnt/src/linux-2.6'

make[1]: *** [default] Error 2

make[1]: Leaving directory `/mnt/src/s2-liplianin/v4l'

make: *** [all] Error 2
```

Ich habe schon viel gegoogelt (und das Problem trat auch in anderen Projekten des öfteren auf), aber eine Lösung fand ich nicht.

auch nicht das ersetzen druch semaphore_init (das bringt die gleiche fehlermeldung mit der implicit declaration)

Die Kernelsourcen sind linux 2.6.37-rc8+, das liplianin habe ich direkt aus der repository.

----------

## boris64

Könnte das hier vielleicht hilfreich sein?

http://kerneltrap.org/mailarchive/git-commits-head/2009/12/2/12416

Eventuell fehlt ja nur ein kleines #include, wobei dieser Patch

ja schon etwas älter (~Dez.2009) zu sein scheint

----------

## FrancisA

 *boris64 wrote:*   

> Könnte das hier vielleicht hilfreich sein?
> 
> http://kerneltrap.org/mailarchive/git-commits-head/2009/12/2/12416
> 
> Eventuell fehlt ja nur ein kleines #include, wobei dieser Patch
> ...

 

Danke das ist das komische, wenn ich include semaphore einbinde und semaphore_init aufrufe, dann beklagt er auch, dass er das implicit....

Eigenartigerweise habe ich gelesen, dass das init_mutex in neueren Versionen des Kernels als "deprecated" gilt. Ich habe vom Source überall das init_mutex auskommentiert, und hat es dann einwandfrei kompiliert. Die TV Karte geht jedoch noch nicht

```

sudo /sbin/modprobe -v dvb-usb-pctv452e

insmod /lib/modules/2.6.37-rc8+/kernel/drivers/media/dvb/ttpci/ttpci-eeprom.ko 

insmod /lib/modules/2.6.37-rc8+/kernel/drivers/media/dvb/dvb-core/dvb-core.ko 

WARNING: Error inserting dvb_core (/lib/modules/2.6.37-rc8+/kernel/drivers/media/dvb/dvb-core/dvb-core.ko): Invalid module format

insmod /lib/modules/2.6.37-rc8+/kernel/drivers/media/dvb/dvb-usb/dvb-usb.ko 

insmod /lib/modules/2.6.37-rc8+/kernel/drivers/media/dvb/dvb-usb/dvb-usb-pctv452e.ko 

```

 :Sad:  Was kann da falsch gelaufen sein?

----------

## FrancisA

3 Gedanken noch 

1) Wie kann man bei so einen Fehler noch mehr Informationen erhalten (ausser invalid module format). Damit könnte man mehr eingrenzen oder unternehmen

Nachtrag: modinfo wird wahrscheinlich für das zuständig sein

```

franz@localhost /mnt/src/s2-liplianin_gentoo $ /sbin/modinfo dvb_core

filename:       /lib/modules/2.6.37-rc8+/kernel/drivers/media/dvb/dvb-core/dvb-core.ko

license:        GPL

author:         Marcus Metzler, Ralph Metzler, Holger Waechtler

description:    DVB Core Driver

depends:        

vermagic:       2.6.37-rc8+ SMP mod_unload 686 

parm:           dvb_net_debug:enable debug messages (int)

parm:           frontend_debug:Turn on/off frontend core debugging (default:off). (int)

parm:           dvb_shutdown_timeout:wait <shutdown_timeout> seconds after close() before suspending hardware (int)

parm:           dvb_force_auto_inversion:0: normal (default), 1: INVERSION_AUTO forced always (int)

parm:           dvb_override_tune_delay:0: normal (default), >0 => delay in milliseconds to wait for lock after a tune attempt (int)

parm:           dvb_powerdown_on_sleep:0: do not power down, 1: turn LNB voltage off on sleep (default) (int)

parm:           dvb_mfe_wait_time:Wait up to <mfe_wait_time> seconds on open() for multi-frontend to become available (default:5 seconds) (int)

parm:           cam_debug:enable verbose debug messages (int)

parm:           dvb_demux_tscheck:enable transport stream continuity and TEI check (int)

parm:           dvb_demux_speedcheck:enable transport stream speed check (int)

parm:           debug:Turn on/off debugging (default:off). (int)

parm:           dvbdev_debug:Turn on/off device debugging (default:off). (int)

```

Aber es wird auch hier nicht ersichtlich, warum er das nicht laden will. Invalid Format sagt er AFAIK, wenn gegen die falsche Kernelversion kompiliert wurde.

2) ich habe immer make clean (beim liplian) vorher aufgerufen. Kann es sein, dass etwas noch nicht gelöscht wurde und deswegen falsche/alte libs oder so dazulinkt?

3) Kann es sein, dass im Kernel selbst irgendetwas beim make menuconfig noch nicht dabei ist, dass das dvb_core braucht? d.h. Kernel dann nochmals vorher erstellen?

der /usr/src/linux linkt auf die aktuellen Kernel sourcen

es gab dann noch (vielleicht war das der Grund):

```

  Building modules, stage 2.

  MODPOST 420 modules

WARNING: /mnt/src/s2-liplianin_gentoo/v4l/dvb-core: 'dvb_unregister_adapter' exported twice. Previous export was in vmlinux

WARNING: /mnt/src/s2-liplianin_gentoo/v4l/dvb-core: 'dvb_register_adapter' exported twice. Previous export was in vmlinux

WARNING: /mnt/src/s2-liplianin_gentoo/v4l/dvb-core: 'dvb_unregister_device' exported twice. Previous export was in vmlinux

...

```

Ich probierte einmal neben make clean auch noch make distclean vorher.

Hat auch nichts geänndert (immer noch invalid modul format)

Jetzt habe ich mir das mit dmesg nochmals angesehen:

```

[ 1000.814195] dvb_core: exports duplicate symbol dvb_unregister_adapter (owned by kernel)

```

Da habe ich noch was gefunden: http://lists-archives.org/video4linux/20577-twinhan-d-a-analog-tuner.html

"In such a case, in order to upgrade to the

Linuxtv supplied drivers, the user will have to rebuild the kernel

without static v4l-dvb driver support, and then install the Linuxtv

drivers as modules afterwards."

Das könnte ich noch probieren.

owned by kernel: Da hätte ich schon stutzig werden können.

Nun habe ich entfernt in menuconfig:

*   Device drivers => Multimedia Support => DVB/ATSCEnable extended debug support weg

*   Device drivers => Multimedia Support => DVB for Linux weg

*   Device drivers => Multimedia Support => Video capture adapters => v4l usb devices weg

Hoffe das war nicht zuviel, dass dann die Webcam noch geht(?)

----------

## FrancisA

Oje, jetzt habe ich ein neues Probelm. Ich kann den Kernel nicht mehr compilieren. Ich denke, das make menuconfig im s2-liplianin verzeichnis hat ihm nicht gut getan. Irgendwas wurde da verändert, dass er nicht

mehr auf mein linux source verzeichnis zeigt.

```

franz@localhost /mnt/src/linux-2.6 $ sudo make

  CHK     include/linux/version.h

  CHK     include/generated/utsrelease.h

  CALL    scripts/checksyscalls.sh

  CHK     include/generated/compile.h

  CC      init/initramfs.o

In file included from include/linux/kexec.h:8,

                 from init/initramfs.c:489:

include/linux/compat.h:17:5: warning: "LINUX_VERSION_CODE" is not defined

include/linux/compat.h:17:27: warning: "KERNEL_VERSION" is not defined

include/linux/compat.h:17:41: error: missing binary operator before token "("

...

```

----------

## FrancisA

 *FrancisA wrote:*   

> Oje, jetzt habe ich ein neues Probelm. Ich kann den Kernel nicht mehr compilieren. Ich denke, das make menuconfig im s2-liplianin verzeichnis hat ihm nicht gut getan. Irgendwas wurde da verändert, dass er nicht
> 
> mehr auf mein linux source verzeichnis zeigt.
> 
> ```
> ...

 

Linux sourcen erneut von Repository geholt, jetzt gehts wieder. das make menuconfig von sa-liplianin hat mir einige links verändert. Ich brauchte nur DVB im Linux Kernel ausschalten, dann ging die Webcam wieder und dbv Unterstützung geht auch wieder.

Nachtrag: Device drivers => Multimedia Support => DVB for Linux (nur das)

----------

