Otázka na tvůj skript
Ivo Panacek
ivop na regionet.cz
Pátek Září 13 10:36:35 CEST 2002
On Pá, 2002-09-13 at 04:49, n_petr na seznam.cz wrote:
> Ahoj,
> mohl bys mi prosímtě vysvětlit tuto část tvého skriptu ?
>
> 1) na co se tam používají libgcc a co to má za výsledek
>
> 2) co je zač to _udivdi3.o
No, to je jednoduche. Kdyz jsem to prvne cvicne
delal na SuSE (prosinec 2001), vse se rozjelo vicemene
dle jejich navodu. Kdyz jsem to opakoval na RedHatu, tak
mi tam chybel symbol _udivdi3. Pavel Kankovsky mi poradil,
(linux konference 13.12.2001)
ze to je v knihovnach a ze v nekterych pripadech
je uz rovnou v kernelu.
No tak jsem to potreboval prikompilovat. Takze
z libgcc si vycucnu ten _udivdi3.o a slinkuji ho do fxusb.o
>
> echo "-----------------------------------------------------"
> echo "priprava libgcc"
>
> find /usr/lib -name 'libgcc.a' -print | while read file
> do
> [ ! -f $file ] && continue
> echo "Pouziji libgcc: $file"
> mkdir libgcc
> cd libgcc
> ar -x $file
> break
> done
>
> [ ! -d libgcc ] && echo "$0: Chyba: je treba nainstalovat balik gcc" && exit
>
> # fxusb.o module
> [ ! -f libgcc/_udivdi3.o ] && echo "$0: Chyba: chybi libgcc/_udivdi3.o" &&
> exit
>
> echo "-----------------------------------------------------"
> echo "uprava zdrojaku a Makefile"
>
> perl -pi -e 's/0x2000/0x2800/ if /^#define\s+PRODUCT_ID\s+/' src.drv/main.c
> perl -pi -e 's/$/ ..\/libgcc\/_udivdi3.o/ if /^LIBRARY\s+=\s+.*CARD/'
> src.drv/makefile
> perl -pi -e 's/^/CC = gcc\n/ if /^DEFINES\s+=\s+/' src.drv/makefile
> KERNELDIR="/usr/src/linux"
>
> if [ -L /usr/src/linux-2.4 -a -d /usr/src/linux-2.4 ]; then
> echo "Pouziji zdrojaky kernelu z /usr/src/linux-2.4"
> perl -pi -e 's/$/ -DMODVERSIONS -include
> \/usr\/src\/linux-2.4\/include\/linux\/modversions.h/ if
> /^\s+-D__\$\(CARD\)/' src.drv/makefile
> perl -pi -e 's/linux/linux-2.4/ if /^CCFLAGS\s+=\s+/' src.drv/makefile
> elif [ -L /usr/src/linux -a -d /usr/src/linux ]; then
> echo "Pouziji zdrojaky kernelu z /usr/src/linux"
> perl -pi -e 's/$/ -DMODVERSIONS -include
> \/usr\/src\/linux\/include\/linux\/modversions.h/ if /^\s+-D__\$\(CARD\)/'
> src.drv/makefile
> else
> echo "$0: Chyba: chybi zdrojaky kernelu" && exit
> fi
>
>
> 3) A podrobně vysvětlit co provede toto a k čemu je to dobré:
>
> perl -pi -e 's/$/ ..\/libgcc\/_udivdi3.o/ if /^LIBRARY\s+=\s+.*CARD/'
> src.drv/makefile
> perl -pi -e 's/^/CC = gcc\n/ if /^DEFINES\s+=\s+/' src.drv/makefile
>
> Jaký má následek, pokud se vymění fxusb-lib.o za _udivdi3.o jestli to dobře
nene, ta lib s tim vubec nijak nesouvisi !!!
> chápu. Možná to řeší ty problémy:
> "will taint the kernel: non GPL license - Proprietary"
>
> Chtělo by to těm zdrojákům podstrčit normální GPL licenci, aby to nehlásilo
> ty hlášky. Nedělá to právě tohle to ?
Urcite ne. Ja na tohle uz nekde narazil, ne presne takhle.
Bylo to tusim kdyz jsem se snazil patchovat kernel, aby fritze
umel (to jsem jeste o existenci driveru od avm nevedel).
Takze jsem ruzne stahoval isdn4linux, ... ze spousty zdroju.
A byly tam i patche na kernel. Tam se ukazalo, ze nektere
kousky tam jsou rovnou binarni a padaly z nich takovehle (ne presne)
hlasky a bylo potreba je rucne prekompilovat primo
v adresarovem strome kernelu. Mam pocit, ze si do sebe
zaklely nejaky checksum dalsich souboru a pak se zlobily,
kdyz nesedel. Urcite tam byla hlaska "will taint the kernel" !
Takze bych patral ve zdrojacich kernelu k tem modulum,
ktere jsou pro fritze jeste potreba (capi, ...).
Tam nekde to urcite je. A urcite to pujde upravit.
Ale domnivam se (!), ze ta hlaska nerusi funkcnost.
ivo
Další informace o konferenci Linux