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

Dotaz: Nová knihovna na Ubuntu 14.04

Beda0 avatar 15.7.2016 12:00 Beda0 | skóre: 29
Nová knihovna na Ubuntu 14.04
Přečteno: 679×
Odpovědět | Admin
Zdravím,
dělám vlastní knihovnu, skompiloval jsem jí na Archu s nejnovějším gcc-6.1.1. Používám v knihovně věci z c++11.

Zkouším ji použít na ostatních systémech. Ubuntu 16.04, 15.10 a Debian 9 bez problémů. Ale Ubuntu 14.04 a Debian 8 nejde.

Kompilace examplů hází hromadu chyb stěžujících si na "undefined reference to 'std::__cxx11::basic_string...'" Problém nejspíš dělají staré systémové knihovny kompilované gcc<5 - kde došlo ke změně u std::string. (původně tam byl gcc-4.8)

Co teda všechno potřebuju doinstalovat/updatovat, abych mohl knihovnu použít?

Update gcc na verzi 5.3.0 z ppa samo o sobě nepomohlo - evidentně potřebuju ještě knihovny, ale nevím přesně jaké - libstdc a glibc? Nějaké novější verze tam jsou (libc6, libstdc++5, libstdc++6 i dev) ale jsou přebité starými a docela se ztrácim. Když přibalím svůj libstdc++.so, tak se chyby změní - nezná to funkce z mojí knihovny s parametrem std::string - evidentně je nekompatibilní s něčím v systému - glibc??

Máte s tím někdo zkušenosti?
(Mohl bych celou knihovnu překompilovat na Ubuntu 14.04 a problém by se pravděpodobně vyřešil, ale teď bych chtěl zjistit na čem všem v systému tyhle věci závisí a u čeho teda musím sledovat verze, když někomu posílám binárku knihovny)
Díky
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

15.7.2016 17:21 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: Nová knihovna na Ubuntu 14.04
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nbolo by lepšie použiť statické linkovanie na novšej distribúcii aby sa dala tá knižnica používať aj na staršej distribúcii??
Beda0 avatar 15.7.2016 17:48 Beda0 | skóre: 29
Rozbalit Rozbalit vše Re: Nová knihovna na Ubuntu 14.04
A statické linkování čeho? Statické slinkování stdlibc++ se mi moc nezdá, navíc by to nepomohlo - když dodám svoje stdlibc++.so, tak to sice vyřeší problém s nedevinovaným std::__cxx11::basic_string, ale hlavní problém přetrvává, jen je obrácnej - nezná to std::string -> právě proto, že ve věcech kompilovanejch gcc<5 je string jinej než v těch kompilovanejch gcc=>5. Aspoň sem to tak pochopil.
15.7.2016 22:27 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: Nová knihovna na Ubuntu 14.04
Tej tvojej knižnice. Otázkou načo je knižnica bez programu ktorý ku má používať.

PS: Statické linkovanie sa používa niekoľko desaťročí aby odstránilo podobné problémy s nekompatibilitou verzií. Jednoducho si staticky prilinkuješ presne to, čo potrebuješ.
Beda0 avatar 16.7.2016 00:24 Beda0 | skóre: 29
Rozbalit Rozbalit vše Re: Nová knihovna na Ubuntu 14.04
Moji knihovnu musim dávat lidem v binární podobě, nemůžu poskytnou zdrojáky. Lidi knihovnu použijou ve svym programu a kompilujou to u sebe. S knihovnou dodávám zdrojáky examplů. Ty mi na systémech kompilovanejch starym gcc<5 nejdou přeložit, protože se změnilo ABI.

Používám věci z gcc minimálně 5 a vejš, takže do systému musim doinstalovat novější gcc - to samo o sobě ale nestačí - proto se snažim zjistit, co dalšího potřebuju updatovat/doinstalovat.
Beda0 avatar 16.7.2016 00:51 Beda0 | skóre: 29
Rozbalit Rozbalit vše Re: Nová knihovna na Ubuntu 14.04
Abych to vyjasnil - lidi budou knihovnu používat ve vlastních programech, který sami naprogramujou a sami si je budou kompilovat - s mojí knihovnout (kterou dodávám .a i .so). Jestli jí budou linkovat staticky nebo dynamicky je vzhledem k popsanýmu problému úplně jedno, protože kompilace bude probíhat na jejich systému s jejich systémovejma knihovnama - pokud je staticky neslinkuju s mojí knihovnou - což u libstdc++ sice jde, ale moc se mi to nezdá a problém to jen posouvá jinam.
16.7.2016 07:31 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: Nová knihovna na Ubuntu 14.04
Tak popíš požiadavky bez ktorých to nepôjde, alebo si povytváraj forky pre rôzne generácie SW.
Beda0 avatar 16.7.2016 09:12 Beda0 | skóre: 29
Rozbalit Rozbalit vše Re: Nová knihovna na Ubuntu 14.04
Ono to je ještě trochu složitější - knihovna bude provozovaná i na ARMech, kde je situace s verzema všeho ještě trochu komplikovanjší - právě proto hledám věci zodpovědný za tenhle ABI bordel místo hledání způsobů jak to obejit.
16.7.2016 10:21 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: Nová knihovna na Ubuntu 14.04
Vývoj je za to zodpovedný. Ak chceš hľadieť dopredu, tak sa nezaťažuj minulosťou.

Alebo, môžeš mi tú knižnicu naportovať na Maemo a udržiavať pri živote. Stále mám k dispozícii tablet Nokia 770 z roku 2005. Teda, nemusíš. To bol len príklad zmyselnosti zaoberania sa starinami.
15.7.2016 22:21 borgcube | blog: nexus
Rozbalit Rozbalit vše Re: Nová knihovna na Ubuntu 14.04
Odpovědět | | Sbalit | Link | Blokovat | Admin
tusim sa menilo ABi, skus prepinac -D_GLIBCXX_USE_CXX11_ABI=0
Beda0 avatar 16.7.2016 00:03 Beda0 | skóre: 29
Rozbalit Rozbalit vše Re: Nová knihovna na Ubuntu 14.04
Právě... tehle přepínač jsem zkoušel jako jednu z prvních věcí, nefunguje.
30.7.2016 17:45 Tommy Angelo | skóre: 2 | Bratislava
Rozbalit Rozbalit vše Re: Nová knihovna na Ubuntu 14.04
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mal som podobny problem. Vyriesil som to nainstalovanim novsej verzie nez 4.8 z ppa. Zabralo ked som nainstaloval min. g++-5 a gcc-5. Bez tohto povysenia mi dokonca ani clang 3.6 a neskorsie mi vyhadzovali chyby s linkovanim na std lib.

Teraz som zo zvedavosti, taktiez pre testovacie a edukacne ucely zvolil najnovsie technologie. Pre viac info kukni na popis k mojmu projektu:

https://github.com/efDidymos/ProcessingLogs#ubuntu-14044-lts-instructions
30.7.2016 18:30 Tommy Angelo | skóre: 2 | Bratislava
Rozbalit Rozbalit vše Re: Nová knihovna na Ubuntu 14.04
Pripadne mozes skusit overit niektore kroky z tohto navodu (nevadi ze je to pre vytvaranie deb balikov): http://wiki.ubuntu.cz/vytvo%C5%99en%C3%AD_.deb_bal%C3%ADku#ov%C4%9B%C5%99en%C3%AD_bal%C3%ADku

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.