Linux - sprawdzic z jakich biliotek (.so) korzysta program

Odpowiedz Nowy wątek
2006-12-11 11:19
0

Witam,

Czy jest jakis sposob na sprawdzenie, z jakich bibliotek dynamicznych korzysta program w linuksie? Cos analogicznego do sprawdzenia jakie funkcje/klasy z bilbiotek dll importuje exek pod Windows.

W linuksie sa biblioteki .so, ktore sa odpowiednikiem dll spod Windows. Czym mozna sprawdzic jakie funkcje lub klasy i z ktorych biliotek sa wykorzstane w danym programie?

Pozostało 580 znaków

2006-12-11 13:09
0

ldd oraz zmienna systemowa LD_DEBUG


Pozostało 580 znaków

2006-12-12 00:28
0

Ok dziala... ale mam jeszcze troche inny problem.

Otoz chodzi mi o cos troche innego - aktualnie zajmuje sie pisaniem aplikacji dla Win/Linux przy uzyciu wxDevCPP. Czyli, kod pisany w wxDevcPP kompiluje potem takze na linuksie - zap omoca wxGTK.

I tu pojawia sie problem - biblioteki wxWidgets sa dolaczane dynamicznie. Poniewaz z zalozenia rozpowszechniam programy w wersji binarnej, to aby u kogokolwiek one mogly dzialac w linuksie, musi on miec u siebie wxGTK runtime w wersji 2.7.

Chcialem tego uniknac - bo nie moge oczekiwac, ze ktos bedzie to u siebie instalowac tylko po to, zeby moj program sie odpalil - zwlaszcza, ze wersji 2.7 w pakietach (sprawdzalem dla Debiana), zdaje sie w ogole nie ma (testing nawet jest starsza).

Zrodla kompiluja sie - lekko liczac - okolo godziny.

Mam wiec 2 wyjscia - albo wkompilowac wxWidgets statycznie (nie wiem na razie jak ani czy w ogole sie da) - albo sprobowac dostarczyc razem z programem tylko owe potrzebne bilioteki dynamiczne.

Liczylem na to, ze jesli biblioteka dynamiczna bedzie w katalogu razem z programem, to zadziala (podobnie jak dll w Windows)- ale sprawdzilem i okazuje sie, ze dalej nie dziala (czyli nie znajduje biblioteki).

Wiec czy jedynym wyjsciem jest statyczne wkompilowanie wxWidgets? Nie da sie tego obejsc w taki sposob, jak probowalem?

Pozostało 580 znaków

2006-12-12 09:44
0
  1. prosta rzecz: dostarczasz zrodlo i/albo tworzysz binarny pakiet dla kazdej dystrybucji.
  2. man ldconfig (sekcja FILES - /etc/ld.so.conf)

wniosek tak czy siak musisz miec prawa roota, wiec najlepiej po prostu dla kazdego 'klienta' tworz wersje binarna pod jego system (systemy instalujesz aby w wersji minimalnej na jakims qemu/vmware/... i kompilujesz) albo dac sobie siana i udostepniac zrodlo, bo kazdy uzytkownik *niksa wczesniej czy pozniej i tak musi sie przyzwyczaic do kompilacji


Linuksa, czy innego Uniksa, można opisać za pomocą logiki boolowskiej a nie za pomocą prawdopodobieństwa.

'System szesnastkowy jest wspaniały! W skali od 1 do 10 daję mu E'

extreme safety for Ubuntu:
sudo echo -e 'Defaults targetpw\nDefaults timestamp_timeout=0' >> /etc/sudoers

Pozostało 580 znaków

2006-12-13 20:06
0

No tak, ale to w tym wypadku niewiele zmienia, bo jak dostarcze zrodlo to i tak do kompilacji bedzie wymagane zainstalowanie wxWidgets.

Do tworzenia pakietow jeszcze nie doszedlem, ale jak bede musial ustalic zaleznosci tak, ze moj program bedzie zalezal od pakietu wxWidgets2.7, ktorego nigdzie nie ma (tak jak pisalem wyzej), to tez niewiele mi pomoze.
Chyba ze bylby jakis sposob dolaczaenie potrzebnych bibliotek do paczki tak, zeby po jej zainstalowaniu wszystko dzialalo - sprawa niezbyt prosta dla kogos kto nie wie jak to zrobic...

Na razie chyba zrobie sobie kilka lokalnych instalacji wxGtk, wtedy bede mogl linkowac statycznie albo dynamicznie - wiem juz ze statycznie tez mozna.

[edit]
Czemu dostalem maila, ze ten posta zostal usuniety z forum? :|

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0