• 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
228 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,406 wizyt
pytanie zadane 7 stycznia 2016 w C i C++ przez Gowi Użytkownik (830 p.)
0 głosów
3 odpowiedzi 208 wizyt
pytanie zadane 5 września 2020 w C i C++ przez Official gildin Bywalec (2,820 p.)
0 głosów
1 odpowiedź 455 wizyt
pytanie zadane 21 stycznia 2016 w C i C++ przez maciek061 Gaduła (4,490 p.)

92,563 zapytań

141,413 odpowiedzi

319,590 komentarzy

61,948 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!

...