[ Sale_123 @ 03.12.2010. 02:33 ] @
Citam sad na netu nesto o djeljenim bibliotekama, pa mi odredjene stvari nisu jasno, ako neko zna, volio bih da mi malo detaljnije objasni, ili da bar da dobar link gdje je to fino objasnjeno. Evo sta sam ja skontao. Recimo da ja instaliram djeljenu biblioteku na moj racunar (biblioteka se npr. zove foo). Ako je u pitanju npr. verzija 2.3.1.4, koraci su slececi: 1. Biblioteku kopiram u /usr/lib/libfoo.so.2.3.1.4 2. Izvrsim ldconfig 3. Napravim simbolicke linkove libfoo.so -> libfoo.so.2 -> libfoo.so.2.3 -> libfoo.so.2.3.1 -> libfoo.so.2.3.1.4 Kad kompajliram moj program, koristim Code: g++ -o myprog myprog.cpp -lfoo E sad, sta se desava kad hocu da instaliram novu biblioteku, recimo 3.1.0.0? Ja hocu da zadrzim staru i da mi programi kompajlirani sa starom bibliotekom, koriste tu staru, a novi programi novu biblioteku. Pretpostavljam da sada imamo sledecu situaciju: Code: libfoo.so -> libfoo.so.3 -> libfoo.so.3.1 -> libfoo.so.3.1.0 -> libfoo.so.3.1.0.0 libfoo.so.2 -> libfoo.so.2.3 -> libfoo.so.2.3.1 -> libfoo.so.2.3.1.4 Pretpostavljam da ce linker prilikom pokretanja mog programa da koristi verziju 3.1.0.0 umjesto 2.3.1.4. 1. Kako to izbjeci? Ja sam recimo pokusavao da ne pravim simbolicku vezu libfoo.so, nego da koristim libfoo.so.2, ali to ne funcionise, tj. ne mogu kompajlirati program. Pokusavao sam recimo Code: g++ -o myprog myprog.cpp -lfoo2 ali nije funcionisalo. 2. Kako kompajlirati program da koristi biblioteku samo odredjenog major release-a (libfoo.so.2)? 3. Sta se desava kada dodje nova verzija, tipa 2.4.0.0? |