GCC linkelés, nem találhato .so

Kezdőlap Fórumok Programozás GCC linkelés, nem találhato .so

10 bejegyzés megtekintése - 21-30 / 39
  • Szerző
    Bejegyzés
  • #2117421
    gabaman
    Felhasználó

      „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.

      #2117422
      gabaman
      Felhasználó

        „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.

        #2117423
        uzsolt
        Felhasználó

          Hopp, igaz.
          Én azt a libet újraforgattam, mert a .la (vagy a .a?) valami miatt nem került be.

          #2117424
          uzsolt
          Felhasználó

            Hopp, igaz.
            Én azt a libet újraforgattam, mert a .la (vagy a .a?) valami miatt nem került be.

            #2117425
            sevi
            Felhasználó
              gabaman 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.0

              A 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)
              #2117426
              sevi
              Felhasználó
                gabaman 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.0

                A 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)
                #2117427
                gabaman
                Felhasználó

                  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.

                  #2117428
                  gabaman
                  Felhasználó

                    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.

                    #2117429
                    sevi
                    Felhasználó
                      gabaman 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.

                      #2117430
                      sevi
                      Felhasználó
                        gabaman 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.

                      10 bejegyzés megtekintése - 21-30 / 39
                      • Be kell jelentkezni a hozzászóláshoz.