• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dołączanie określonych wersji bibliotek do projektów w C

Object Storage Arubacloud
0 głosów
230 wizyt
pytanie zadane 22 lutego 2023 w C i C++ przez whiteman808 Obywatel (1,820 p.)
Hej,
Powiedzmy że mam projekt A i projekt B. Projekt a wymaga libfoo w wersji 4.1.3, projekt b wymaga libfoo 3.7 i libbar 4.5. Podpowie ktoś jak uzyskać efekt podobny ale dla projektów w C tak jak w pythonie się uzyskiwało poprzez python -m venv i pip install bez instalowania zależności system-wide?
Dziękuję

1 odpowiedź

+2 głosów
odpowiedź 22 lutego 2023 przez mokrowski Mędrzec (155,460 p.)

Możesz kompilować każdy z tych projektów statycznie, włączając bibliotekę danego rodzaju bezpośrednio do programu. Plusem takiego rozwiązania jest łatwiejsza dystrybucja binarnej wersji programu. Minusem jest wzrastająca objętość pliku wykonywalnego (np. dla kompilatora gcc, to kompilacja z flagą -static)

Jeśli jednak nie chcesz rezygnować z konsolidacji dynamicznej, to tu już możesz mieć wiele dróg.

  • podanie podczas kompilacji konkretnej wersji biblioteki
  • użycie mechanizmu soname i pozostawienie rozwiązania wersji linkerowi
  • użycie innej konfiguracji środowiska uruchomienia dla danego programu (dla GNU/Linux to ustawienie zmiennej LD_LIBRARY_PATH)
  • wymuszenie ładowania biblioteki przed/na samym początku ładowania programu (znów dla GNU/Linux to LD_PRELOAD)
  • ładowanie biblioteki przez sam program (rodzina wywołań dlsym(), dlopen()... )

Jeszcze kilka opcji istnieje... Jak choćby przełączenie się na inny katalog bazowy, startującego programu, używanie mechanizmów snap czy flatpack, konteneryzacja...

A najprościej (nie znaczy że najwygodniej)? Połóż biblioteki w katalogu programu i ustaw zmienną rozwiązującą katalog z bibliotekami na katalog programu.

Podobne pytania

+1 głos
3 odpowiedzi 1,413 wizyt
pytanie zadane 7 stycznia 2016 w C i C++ przez Gowi Użytkownik (830 p.)
0 głosów
3 odpowiedzi 209 wizyt
pytanie zadane 5 września 2020 w C i C++ przez Official gildin Bywalec (2,820 p.)
0 głosów
1 odpowiedź 458 wizyt
pytanie zadane 21 stycznia 2016 w C i C++ przez maciek061 Gaduła (4,490 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,965 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...