Autor Wątek: Biblioteki dzielone, linux  (Przeczytany 2045 razy)

Offline lord Snow

  • Użytkownik
    • http://www.gamejunk.cba.pl/

# Październik 14, 2008, 11:50:41
Wiem ze zaraz ktos mnie zjedzie za nie uzywanie googla ale za nic nie moge znalezc ani tam ani tutaj jak sie ich uzywa (bibliotek dzielonych .so). Wiem jak to jest z .dll, tyle ze tam dostaje dodatkowo .a ktore tworzy sie z rzeczy wybranych do eksportu czy jak to tam nazwac, ale jak jest z .so? Mam juz .so swojego projektu ale od tej pory ni w ta ni w druga strone. Moze ktos pomoc? Bylbym wdzieczny za jakis prosty przyklad, jakis kod. Zaznaczam ze raczej nie chce korzystac z dlopen() bo podobno mozna to zrobic inaczej.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline albireo

  • Użytkownik

# Październik 14, 2008, 12:04:13
Traktuj .so tak jakby jednocześnie były .dll i .a :)

bies

  • Gość
# Październik 14, 2008, 12:14:52
Krótki tutorial:
Cytat: lukasz@orthank
$ echo 'int f() {return 10;}' >library.c
$ gcc -fPIC -c library.c -o library.o
$ gcc -shared -o library.so library.o
$ echo '#include <stdio.h>\nint main() {printf("%d\\n", f()); return 0;}' >program.c
$ gcc -o program program.c library.so
$ ./program
./program: error while loading shared libraries: library.so: cannot open shared object file: No such file or directory
$ LD_LIBRARY_PATH=. ./program
10

Więcej na ten temat znajdziesz w sieci, np. [1] lub [2]. Oprócz tego man ld.so.

[1] http://www.linux.org/docs/ldp/howto/Program-Library-HOWTO/index.html
[2] http://people.redhat.com/drepper/dsohowto.pdf
« Ostatnia zmiana: Październik 14, 2008, 12:47:14 wysłana przez bies »

Offline lord Snow

  • Użytkownik
    • http://www.gamejunk.cba.pl/

# Październik 14, 2008, 13:34:07
Dobra troche zalamilem (czasami tak trzeba) :) Bardzo pomogla mi strona podana przez bies`a http://www.linux.org/docs/ldp/howto/Program-Library-HOWTO/index.html osobom o podobnym problemie polecam szczegolnie przyjrzec sie przykladom z punktu 6. Dzieki!