On 21.9.2009, at 17:47, Dan Lukes wrote:

On 21.9.2009 16:23, Miroslav Prýmek:
--> Vsiml jsem si, ze portupgrade vypisuje "Backing up the old version",
ale nejak netusim, kde ji najit...

Nikde, pokud sis neobjednal, aby se porizena zaloha zachovala. bez toho existuje pouze po dobu update, kvuli tomu, aby bylo mozen se pri neuspesen instalaci nove verze vratit ke stare. Po uspesne instalaci je zaloha zrusena.


Ok, uz jsem objevil opsnu -b - a kam se ten balik nahraje? Normalne do /usr/ports/packages/...?


--> Jedinej anoncvs server, ke kterymu se mi podarilo pripojit, byl
anoncvs.tw.FreeBSD.org, coz neni
Jakej teda pouzit priste nejblizsi server?

Jmena v tomhle formatu mi nic nerikaji (coz neznamena, ze nekde v nejakem navodu nejsou takhle uvedena). Ja pouzivam cvsup.ZEME.freebsd.org kde ZEME=cs


Je to treba tady: http://www.freebsd.org/doc/en/books/handbook/anoncvs.html
Nejak jsem si nevimproc myslel, ze v tom cvsup je neco jinyho nez v anoncvs...

Me porad nejde do hlavy, jak muze PO KOMPILACI byt nejakej nedefinovanej
symbol. Vzdyt to by ta kompilace mela
zhavarovat, ne?

Aha. Ty nevis, co je kompilace. Nebo, prinejmensim, nerozlisujes kompilaci (preklad) a linkovani (sestaveni).
[...]

mi to nejak polopaticky priblizit

Nekteri si mysli, ze prave tohle mi jde. Tak snad se to podarilo ...

Musim se pridat k nazoru, ze ti to fakt jde ;) - a dekuju za obsahly vyklad.

Nicmene v tomhle jsme si nerozumeli - kdyz jsem psal "po kompilaci", tak jsem tim myslel "kompilaci balicku" - kompilaci, linkovani, ...., instalaci. Takze spravne otazka mela znit "jaktoze se balicek bez problemu prelozi a nainstaluje, kdyz mu chybi nejaky symbol v knihovne, kterou pouziva" - a odpoved, ktera me napadla: protoze vysledkem, kterej se instaluje neni spustitelna binarka, ale zase knihovna, u ktere to proste "nevadi" (resp. nevadi to nikomu
krome uzivatele ;)

Jal jsem se to zkusit:
----------------------------------------- mylib.h
void myLibFunc();
----------------------------------------- mylib.c
#include <stdio.h>
#include "mylib.h"

void myLibFunc() {
  printf("Hola hola hola!\n");
}
----------------------------------------- myapp.c
#include "mylib.h"

int main() {
  myLibFunc();
}
----------------------------------------- Makefile
.PHONY: clean all

all: libmylib.so myapp

clean:
        rm *.o *.so myapp 2>/dev/null || true        


libmylib.so: mylib.c mylib.h
        gcc -c mylib.c -o mylib.o
        gcc -shared mylib.o -o libmylib.so
        rm mylib.o # ciste proto, aby se mi tam nemotal

myapp: myapp.c mylib.h libmylib.so
        gcc -c myapp.c -o myapp.o
        gcc -L. -lmylib myapp.o -o myapp

-----------------------------------------
Kdyz ted vytvorim binarku, je vsechno v poradku:
# make all
gcc -c mylib.c -o mylib.o
gcc -shared mylib.o -o libmylib.so
rm mylib.o
gcc -c myapp.c -o myapp.o
gcc -L. -lmylib myapp.o -o myapp
# setenv LD_LIBRARY_PATH .
# ldd myapp
myapp:
        libmylib.so => ./libmylib.so (0x2807d000)
        libc.so.7 => /lib/libc.so.7 (0x2807f000)
# ./myapp
Hola hola hola!

Kdyz v mylib.c zmenim myLibFunc na myLibFuncX, tak to zhavaruje (coz jsem prave cekal i u toho py-lxml): # make [ret : 0] [mpry...@kyrios.gosw.cz]
gcc -c mylib.c -o mylib.o
gcc -shared mylib.o -o libmylib.so
rm mylib.o
gcc -c myapp.c -o myapp.o
gcc -L. -lmylib myapp.o -o myapp
myapp.o(.text+0x12): In function `main':
: undefined reference to `myLibFunc'
*** Error code 1

No a me slo o to, ze nevim, jak vnitrne to linkovani presne funguje - predpokladam, ze .so objekt ma v sobe nejaky zaznam "potrebuju objekty libprvni.so.1 a libdruha.so.2" a pak ma seznam nedefinovanych symbolu, kterej se ale resi az tehdy, kdy se symbol skutecne
pouzije nebo co...

Pomoci ldd potom muzu zjistit, jestli jsou k dispozici vsechny tyhle objekty, ale nezjistim, jestli
jsou k dispozici skutecne vsechny symboly, ktery jsou nedefinovany...

# ldd libmylib.so
libmylib.so:
        libc.so.7 => /lib/libc.so.7 (0x28080000)

Jestli to dobre chapu, tak problem je v tom, ze jde udelat:
# gcc -shared myapp.o -o libmyapp.so
prestoze je tam ten nedefinovanej symbol myLibFunc (v knihovne je myLibFuncX)

Porad nerozumim tomu, proc je mozny vytvorit knihovnu, ktera ma nejaky nedefinovany symboly, ktery nejsou v dobe jejiho prekladu k dispozici v zadne z knihoven, ktery linkuje - myslel jsem, ze se to hlida, a ze kdyz ldd ma vsechno "zaplneny", tak nemuze byt zadnej nedefinovanej symbol, coz jsem se teda spletl - v tom je ten zakopanej pes...

Ale mozna to chapu nejak uplne blbe :)

M.
--
FreeBSD mailing list (users-l@freebsd.cz)
http://www.freebsd.cz/listserv/listinfo/users-l

Odpovedet emailem