Portál AbcLinuxu, 11. května 2025 04:11

Dotaz: cURL jako statická knihovna v C++ na Linuxu

12.5.2011 13:48 illagrenan
cURL jako statická knihovna v C++ na Linuxu
Přečteno: 421×
Odpovědět | Admin
Ahoj,

do školy potřebuji ve svém programu použít cURL knihovnu. Musím ji však linkovat staticky (výsledek se bude odevzdávat jako 1 archiv se všemi použitými knihovnami).

Když ji použiju dynamicky (jako balíček ze synapticu), vše funguje OK.

Postupoval jsem takto:
  1. Stáhnul jsem poslední verzi zdrojáků z http://curl.haxx.se/download.html
  2. Rozbalil archiv
  3. a spustil:
./configure --disable-shared --without-ssl 
make
make install
(Vše proběhlo bez problémů)

A tady jsem se zaseknul a absolutně nevím co dál.

Když kompiluji cURL na Win, vyleze na mě libcurl.lib kterou spolu s *.h soubory nalinkuji do projektu a vše frčí. Na Lin bohužel nemám s knihovnami žádné zkušenosti.

Díky moc za pomoc.:)

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

12.5.2011 15:19 Sten
Rozbalit Rozbalit vše Re: cURL jako statická knihovna v C++ na Linuxu
Odpovědět | | Sbalit | Link | Blokovat | Admin
V Linuxu vyleze libcurl.a a to se chová totožně jako libcurl.lib ve Windows (slinkujete to s *.cc soubory).
12.5.2011 16:18 Ivan
Rozbalit Rozbalit vše Re: cURL jako statická knihovna v C++ na Linuxu
Jeste dodam, ze staticka libcurl.a (stejne jako dynamicka libcurl.so) pravdepodobne bude zaviset jeste na dalsich knihovnach(treba libssl). V pripade linkovani dynamicke knihovny se to vyresi samo. V pripade linkovani staticke, ti nejspise libtool vygeneruje soubor s priponou .lo (alespon myslim) a v nem je napsano jake vsechny staticke knihovny musis linkeru predhodit.

12.5.2011 16:52 illagrenan
Rozbalit Rozbalit vše Re: cURL jako statická knihovna v C++ na Linuxu
Díky za odpovědi. Avšak i po bezproblémové kompilaci (žádné errory) nemůžu libcurl.a nikde najít. Jediné, co ve složce curl/libs najdu, je libcurl.la (to asi není moje knihovna co).
12.5.2011 18:48 l4m4
Rozbalit Rozbalit vše Re: cURL jako statická knihovna v C++ na Linuxu
V adresáři curl/libs nic obecně použitelného být nemá. Knihovna má být po make install v ${prefix}/lib.
12.5.2011 21:42 illagrenan
Rozbalit Rozbalit vše Re: cURL jako statická knihovna v C++ na Linuxu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Díky všem za pomoc. Vyřešeno, postup pro budoucí generace:
./configure --prefix=$HOME/foo/bar/compiled --without-ssl --disable-shared
make
makeinstall
V Eclipse CDT následně: Project properties -> C/C++ Build -> Settings -> GCC C++ Linker -> Libraries a přidat:

-L/src/lib -lcurl

Kde /lib obsahuje libcurl.a.

A v C/C++ General -> Paths and Symbols přidat adresář s *.h.

pavlix avatar 12.5.2011 22:06 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: cURL jako statická knihovna v C++ na Linuxu
Odpovědět | | Sbalit | Link | Blokovat | Admin
(výsledek se bude odevzdávat jako 1 archiv se všemi použitými knihovnami).
A to je nějaký problém tuto knihovnu do archivu zahrnout?
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
12.5.2011 22:27 illagrenan
Rozbalit Rozbalit vše Re: cURL jako statická knihovna v C++ na Linuxu
No celý program musí být spustitelný přes makefile a fungovat nezávisle na okolí.
David Watzke avatar 12.5.2011 22:30 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: cURL jako statická knihovna v C++ na Linuxu
No to ale není problém ani s dynamickou knihovnou, když ji k tomu přibalíš.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
12.5.2011 22:37 illagrenan
Rozbalit Rozbalit vše Re: cURL jako statická knihovna v C++ na Linuxu
Jo jo už mi to taky došlo, konečně tomu začínám trochu rozumět. Měl jsem vůbec problém s kompilací, ať už staticky nebo dynamicky.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.