GCC statická cesta ku knižnici

Sekcia: Programovanie 27.12.2012 | 23:09
Avatar default Debian  Používateľ
Som myslel, že to sem ani nedám, ale už som zúfalý, ako mám priamo príkazu gcc zadať cestu k priečinku kde budú binárne (skompilované) knižnice, ktoré bude program využívať?

Teraz to mám takto:

gcc test.c -o demo -I/usr/include/curl -l/home/radovan/C/test/curl/libcurl.so.4


pričom -I/usr/include/curl určuje kde sú zdrojové kódy knižnice , a tým druhým -l/home/radovan/C/test/curl/libcurl.so.4 som chcel zadať priamu cestu ku skompilovanej knižnici, ktorú bude už skompilovaný program využívať, a skúšal som to zmeniť aj za cestu čo je len ako priečinok kde je tá knižnica, ale výsledok je taký istý, sťažuje sa:
st/curl/libcurl.so.4
/usr/bin/ld: cannot find -l/home/radovan/C/test/curl/libcurl.so.4
collect2: error: ld returned 1 exit status

Dačo asi robím zle.
R.K
    • Re: GCC statická cesta ku knižnici 27.12.2012 | 23:38
      WlaSaTy   Návštevník
      Cestu v ktorej má program hľadať dynamické knižnice určuje dynamický zavádzač a nie prekladač. Ten sa konfiguruje pre systém v konfiguráku v /etc a pre jednotlivého užívateľa pomocou premennej LD_LIBRARY_PATH.
      • Re: GCC statická cesta ku knižnici 28.12.2012 | 00:58
        Avatar default Debian  Používateľ
        Tak to nemusí byť dynamické, nejde proste nastaviť tak ako som to skúšal ja, prekladaču, ktorú presne knižnicu statickú má použiť?
        R.K
        • Re: GCC statická cesta ku knižnici 28.12.2012 | 01:14
          WlaSaTy   Návštevník
          Súbor s názvom *.so je obvykle shared object. Teda, niečo čo ľudia nesprávne nazývajú dynamická knižnica.

          Statickú knižnicu (*.a) alebo objekt s kódom (*.o) prilinkuješ inak.
          • Re: GCC statická cesta ku knižnici 28.12.2012 | 10:47
            Avatar default Debian  Používateľ
            Aha, ja som myslel že dynamicka knižnica je len pre svoju polohu, a nie pre to akú má koncovku. Ale aj tak, dá sa to ako to chcem ja, veď stiahni si taký blender binárku , pozri sem Tiež si zo sebou ťahá svoje vlastné shader knižnice a vie ich použiť. Neverím tomu, že nejde každému skompilovanému programu zadať kde má hladať svoje shader - skompilované knižnice. (A prepáč ak sa blbo pýtam, lebo som z toho kúsok debil ako vidíš :D )
            R.K
            • Re: GCC statická cesta ku knižnici 28.12.2012 | 10:55
              Avatar Fridolín Pokorný Fedora 21  Používateľ
              To, ze subory maju zadane koncovky je len konvencia.

              Uz ti odpovedal, ako to spravis - vid. prvy post.
              • Re: GCC statická cesta ku knižnici 28.12.2012 | 11:20
                Avatar default Debian  Používateľ
                Ale ak chcem ten software distribuovať tak predsa nemôžem každému povedať aby si prenastavil dáku globálnu premennú.
                R.K
                • Re: GCC statická cesta ku knižnici 28.12.2012 | 13:21
                  WlaSaTy   Návštevník
                  Tak pán si chce sám implementovať funkcie dynamického zavádzača keďže sa mu zdá zložité definovať dependency pre inštalačný balíček.

                  Veľa zdaru.
                  • Re: GCC statická cesta ku knižnici 28.12.2012 | 13:26
                    Avatar default Debian  Používateľ
                    Ja niesom žiadny pán, musím priznať, že neviem ani čo robím. Len chcem proste nejak dosiahnuť výsledok, ale ty hovoríš v šifrách, nechápem prečo furt niekoho z dačoho podozrievaš, ja sa len snažím zadefinovať programu kde má hladať svoje knižnice, ak to nejde, alebo sa to robí ináč, tak mi to tak povedz, len v mojej reči.
                    R.K
                    • Re: GCC statická cesta ku knižnici 28.12.2012 | 18:26
                      WlaSaTy   Návštevník
                      Áno,
                      jazyk programátorov je obvykle šifra. Pokiaľ sa ho nenaučíš, tak to budeš mať ťažké.

                      Inak, aký veľký problém je prilinkovať tú časť staticky? Asi nie, návodov je dosť.
                      • Re: GCC statická cesta ku knižnici 28.12.2012 | 18:29
                        Avatar default Debian  Používateľ
                        Už sa o niečo pokúšam, prišiel som na to, že knižnice čo sú .so tak sú shader a nemôžu byť staticky nalinkované, potrebujem statičké čo končia na .a , už dačo zrábam, len mám toho veľa, potom napíšem ako som dopadol.
                        R.K
                        • Re: GCC statická cesta ku knižnici 28.12.2012 | 19:22
                          Avatar default Debian  Používateľ
                          Ok kašlem na to už ma to prestalo baviť, to je nekonečno, všetko možné to chce, idem zvoli cestu dynamických knižníc. Vďaka za ochotu riesiť problém. Zle som zvolil cestu akou to spravím, ináč robím script čo bude kontrolovať či sa niečo nezmenilo na webe, možno sa to bude hodiť aj niekomu inému, len neviem kedy to spravím.
                          R.K
                          • Re: GCC statická cesta ku knižnici 28.12.2012 | 20:24
                            WlaSaTy   Návštevník
                            Skript nepracuje s knižnicami, ale s nástrojmi. Buď môžeš použiť hotové nástroje ako curl, wget, alebo niečo viac hardcore ako je netcat či rovno sockety v bash-i.

                            Ono, taký nástroj by sa zišiel. Teda, skôr služba ako nástroj. Žiaľ, z nástupom dynamických stránok a zahltením webu reklamou prestal byť funkčný HTTP Head Request. Ten bol zodpovedný za vrátenie dátumu poskednej modifikáciesúboru alebo stránky.

                            V dnešnej dobe Ti to vždy hodí že je nová stránka. Už len preto, že tam prepnú reklamu z kolotoča. Takže, niečo takéto bolo nahradené pomocou RSS kanálov.
                            • Re: GCC statická cesta ku knižnici 28.12.2012 | 20:42
                              Avatar default Debian  Používateľ
                              Dáko to vymyslím, to som chcel primárne pre seba, na linuxos.sk niesu dynamické prvky, a ak by aj boli, tak to prerobím, a zadám iba presne časti ktoré to má kontrolovať, ako je fórum, správičky ... . Viem, že stačí RSS , ale ja chcem aby to nebolo na ničom závislé. Potom by som tomu dal aj grafiku, asi qt a nejak do zakomponoval do systému.
                              R.K
    • Re: GCC statická cesta ku knižnici 29.12.2012 | 10:39
      peto   Návštevník
      >gcc test.c -o demo -I/usr/include/curl -l/home/radovan/C/test/curl/libcurl.so.4


      podla mna ten riadok ma vyzerat

      gcc test.c -o demo -static -I/usr/include/curl -L/home/radovan/C/test/curl/ -lcurl


      Pochopniu mozno pomoze moja stara prenaska

      http://www.posterus.sk/srt2011/Unix_Linux-systemy_realneho_casu_2011/stranka_predmetu_URPI_FEI_STU/Entries/2011/10/1_Tretia_prednaska.html
      • Re: GCC statická cesta ku knižnici 29.12.2012 | 10:58
        Avatar default Debian  Používateľ
        Ja som skúšal už všetko možné, a nemá to vyzerať ani tak, pretože, libcurl.so.4 je shader knižnica, a tá sa s parametrom static nedá použiť, treba statickú knižnicu, libcurl.a , ja som to zohnal , už to aj šlo, len potom to chce všetko statické, tak som zas potreboval C knižnicu, a tam to pindalo pre kadečo tak som sa na to vykašlal. Idem radšej používať shader, ale aspoň som sa naučil dačo. Vďaka za odpoveď.
        R.K
        • Re: GCC statická cesta ku knižnici 05.01.2013 | 17:07
          WlaSaTy   Návštevník
          Knižnica libcurl.so je shared object, teda zdieľaný objekt (knižnica). Shader je tieňovač, teda funkcia grafickej karty používaná pri nasvetľovaní 3D scén. Ale, to je vedľajšie.

          Ak chceš riešiť programovanie v nejakej distribúcii, tak sa pozri na balíčky ktoré majú v názve -devel. V tomto prípade by to mal byť balíček libcurl-devel ktorý by mal byť súčasťou priamo dostupných balíčkov. Škoda, že to nenapadlo nejakého fedoráka poradiť skôr.
          • Re: GCC statická cesta ku knižnici 05.01.2013 | 17:22
            Avatar default Debian  Používateľ
            Aha, ale projekt som aj tak nedokončil, lebo som sa čudoval, že čo to furt hlási nezhodu, lebo to porovnávalo starú stránu s novou, teda index.html , tak som sa tam pozrel, a tam nejaký script generuje čas za ktorý sa niektoré časti natiahli, takže by som musel spraviť aby to kontrolovalo len určité riadky, a to už bolo moc zložité. TAKŽE si počkám na rss. Ale aspoň som sa dačo naučil čo neskôr môžem využiť, ďakujem.
            R.K
            • Re: GCC statická cesta ku knižnici 05.01.2013 | 17:23
              Avatar default Debian  Používateľ
              A ináč ja niesom fedorák, ja dakedy za ďeň aj 5 distier vystriedam :D .
              R.K
              • Re: GCC statická cesta ku knižnici 05.01.2013 | 17:52
                WlaSaTy   Návštevník
                To s tými dynamickými stránkami som už písal. Preto vzniklo RSS a dokonca sa aj stalo relatívnym štandardom. Ako, vysekať by sa to zo stránky dalo, ale jednalo by sa o vynachádzanie kolesa. A generovalo by to zbytočný prietok. RSS a poprípade SMAP cez email konferencie sú lepším riešením. I keď ja osobne by som radšej riešil namiesto email radšej NNTP. Od neho sa už ale upúšťa, podobne ako zakapal gopher a podobné užitočné služby.

                A s tým *-devel* to platí pre takmer všetky distribúcie. Okrem metadistribúcií ako je gentoo a jeho odvodeniny.