Kezdőlap › Fórumok › Programozás › GCC linkelés, nem találhato .so
- This topic has 38 hozzászólás, 4 résztvevő, and was last updated 18 years telt el by
sevi.
-
SzerzőBejegyzés
-
2007-06-13-18:59 #2117421
„Normális ez így?”
Igen.„Azt nem értem, hogy miért nem működik magától, mikor egy csomó másikprogramnak is az /usr/local-ban vannak a libjei, és azok futnak.”
Egy osztott libet (.so) 4 módszerrel lehet használatba venni:
1. dinamikus betöltésel, mint egy fájlt (dlopen, dlclose).
2. Linkeléssel (ld segítségével):
2a. alapértelmezett útvonal alapján
2b. megadott útvonal alapján (LD_LIBRARY_PATH)
2c. „előtöltéssel” (LD_PRELOAD)A mozilla pl. a 2b-t használja, és a firefox nevű fájl egy shell script, ami a firefox-bin fájl megfelelő paraméterezéssel meghívja. Tehát hiába furcsa, tejjesen jól van így.
„Nem lehet hogy én rontottam el valamit?”
Ez esetben nem, mert nem egy módszer használatos.„A forráskódban lehet olyan hibát véteni, ami ezt eredményezi?”
Nem.„Ha az /etc/ld.so.conf-ba beírom, ugyanúgy nem működik. A másikat nem próbáltam, de szerintem ugyanaz a hatás.”
Mi a kimenete ennek:
$ ls -l /usr/lobal/lib/libpurple.*Kell lennie legalább 1 linknek, meg egy .la-nak.
2007-06-13-18:59 #2117422„Normális ez így?”
Igen.„Azt nem értem, hogy miért nem működik magától, mikor egy csomó másikprogramnak is az /usr/local-ban vannak a libjei, és azok futnak.”
Egy osztott libet (.so) 4 módszerrel lehet használatba venni:
1. dinamikus betöltésel, mint egy fájlt (dlopen, dlclose).
2. Linkeléssel (ld segítségével):
2a. alapértelmezett útvonal alapján
2b. megadott útvonal alapján (LD_LIBRARY_PATH)
2c. „előtöltéssel” (LD_PRELOAD)A mozilla pl. a 2b-t használja, és a firefox nevű fájl egy shell script, ami a firefox-bin fájl megfelelő paraméterezéssel meghívja. Tehát hiába furcsa, tejjesen jól van így.
„Nem lehet hogy én rontottam el valamit?”
Ez esetben nem, mert nem egy módszer használatos.„A forráskódban lehet olyan hibát véteni, ami ezt eredményezi?”
Nem.„Ha az /etc/ld.so.conf-ba beírom, ugyanúgy nem működik. A másikat nem próbáltam, de szerintem ugyanaz a hatás.”
Mi a kimenete ennek:
$ ls -l /usr/lobal/lib/libpurple.*Kell lennie legalább 1 linknek, meg egy .la-nak.
2007-06-13-19:01 #2117423Hopp, igaz.
Én azt a libet újraforgattam, mert a .la (vagy a .a?) valami miatt nem került be.2007-06-13-19:01 #2117424Hopp, igaz.
Én azt a libet újraforgattam, mert a .la (vagy a .a?) valami miatt nem került be.2007-06-13-19:07 #2117425gabaman wrote:Mi a kimenete ennek:
$ ls -l /usr/lobal/lib/libpurple.*Kell lennie legalább 1 linknek, meg egy .la-nak.
Bátorkodtam átírni local-ra, így:
Code:$ ls -l /usr/local/lib/libpurple.*
-rwxr-xr-x 1 root root 999 2007-05-12 13:17 /usr/local/lib/libpurple.la
lrwxrwxrwx 1 root root 18 2007-05-12 13:17 /usr/local/lib/libpurple.so -> libpurple.so.0.0.0
lrwxrwxrwx 1 root root 18 2007-05-12 13:17 /usr/local/lib/libpurple.so.0 -> libpurple.so.0.0.0
-rwxr-xr-x 1 root root 1657640 2007-05-12 13:17 /usr/local/lib/libpurple.so.0.0.0A pidgin is ugyanezt a libet használja, és ő megtalálja.
Code:$ ldd /usr/local/bin/pidgin |grep purple
libpurple.so.0 => /usr/local/lib/libpurple.so.0 (0xb76dc000)2007-06-13-19:07 #2117426gabaman wrote:Mi a kimenete ennek:
$ ls -l /usr/lobal/lib/libpurple.*Kell lennie legalább 1 linknek, meg egy .la-nak.
Bátorkodtam átírni local-ra, így:
Code:$ ls -l /usr/local/lib/libpurple.*
-rwxr-xr-x 1 root root 999 2007-05-12 13:17 /usr/local/lib/libpurple.la
lrwxrwxrwx 1 root root 18 2007-05-12 13:17 /usr/local/lib/libpurple.so -> libpurple.so.0.0.0
lrwxrwxrwx 1 root root 18 2007-05-12 13:17 /usr/local/lib/libpurple.so.0 -> libpurple.so.0.0.0
-rwxr-xr-x 1 root root 1657640 2007-05-12 13:17 /usr/local/lib/libpurple.so.0.0.0A pidgin is ugyanezt a libet használja, és ő megtalálja.
Code:$ ldd /usr/local/bin/pidgin |grep purple
libpurple.so.0 => /usr/local/lib/libpurple.so.0 (0xb76dc000)2007-06-13-19:25 #2117427Egy módon lokalizálni lehet hogy hol a hiba. Ha a
$ LD_LIBRARY_PATH=/usr/local/lib ldd ./elaborate |grep purple
oké, akkor a progi fordításánál van a gond. Ha nem okk, akkor meg az ldconfig-gal.
2007-06-13-19:25 #2117428Egy módon lokalizálni lehet hogy hol a hiba. Ha a
$ LD_LIBRARY_PATH=/usr/local/lib ldd ./elaborate |grep purple
oké, akkor a progi fordításánál van a gond. Ha nem okk, akkor meg az ldconfig-gal.
2007-06-13-19:46 #2117429gabaman wrote:Egy módon lokalizálni lehet hogy hol a hiba. Ha a$ LD_LIBRARY_PATH=/usr/local/lib ldd ./elaborate |grep purple
oké, akkor a progi fordításánál van a gond. Ha nem okk, akkor meg az ldconfig-gal.
Code:$ LD_LIBRARY_PATH=/usr/local/lib ldd ./elaborate |grep purple
libpurple.so.0 => /usr/local/lib/libpurple.so.0 (0xb7d22000)Tehát a fordítással van a gond. De a gcc találja a libet. Nincs valami plusz kapcsoló amit be kéne állítani?
Tehát a fordítással van a gond.
2007-06-13-19:46 #2117430gabaman wrote:Egy módon lokalizálni lehet hogy hol a hiba. Ha a$ LD_LIBRARY_PATH=/usr/local/lib ldd ./elaborate |grep purple
oké, akkor a progi fordításánál van a gond. Ha nem okk, akkor meg az ldconfig-gal.
Code:$ LD_LIBRARY_PATH=/usr/local/lib ldd ./elaborate |grep purple
libpurple.so.0 => /usr/local/lib/libpurple.so.0 (0xb7d22000)Tehát a fordítással van a gond. De a gcc találja a libet. Nincs valami plusz kapcsoló amit be kéne állítani?
Tehát a fordítással van a gond.
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz