GNU/Linux >> Znalost Linux >  >> Linux

Kam mám umístit knihovny třetích stran pro nastavení vývojového prostředí C++ Linux?

Kam umístit knihovny

Nejlepším řešením je použít systém balení vaší distribuce Linuxu (apt-get , yum , nebo podobné) k instalaci knihoven z balíčků poskytovaných distribucí, kdykoli je to možné.

Pokud zabalené knihovny distribuce nejsou dostatečně aktuální verze, nebo pokud potřebujete nějaké nestandardní možnosti sestavení, nebo pokud potřebujete knihovnu, kterou vaše distribuce neposkytuje, můžete si ji sestavit a nainstalovat sami. Máte dvě hlavní možnosti, kam knihovnu umístit:

  • /usr/local (knihovny pod /usr/local/lib , záhlaví pod /usr/local/include ). Tím se nainstalují knihovny do celého systému a je to pravděpodobně nejjednodušší řešení, protože byste pak měli být schopni stavět proti nim bez dalších kroků. NEINSTALUJTE knihovny přímo pod /usr , protože to bude narušovat systém balení vaší distribuce.
  • V adresáři vašeho projektu, stejně jako v systému Windows. To má výhodu v tom, že nevyžaduje přístup root a neprovádí změny v celém systému, ale budete muset aktualizovat cesty k projektu a cesty knihoven a budete muset umístit soubory sdílených knihoven někam, kde je dynamický linker najde ( pomocí LD_LIBRARY_PATH nebo ld.so.conf - viz odkaz pro další podrobnosti).

Jak fungují knihovny

Viz vynikající programovací knihovna Davida A. Wheelera HOWTO. Doporučuji přečíst si to a poté zveřejnit konkrétní otázky jako nová témata.

Jak distribuovat program

Programy pro Unix/Linux tradičně neobsahují kopie svých závislostí. Místo toho je na koncovém uživateli nebo vývojáři, aby si tyto závislosti nainstaloval sám. To může vyžadovat "velké README", jak jste řekl, ale má to několik výhod:

  • Vývojové knihovny lze instalovat, spravovat a aktualizovat prostřednictvím správce balíčků distribuce, namísto toho, aby každá zdrojová kopie měla svou vlastní sadu knihoven ke sledování.
  • V systému je pouze jedna kopie každé dané knihovny, takže existuje pouze jedno místo, které je třeba aktualizovat, pokud je například nalezena bezpečnostní chyba. (Vezměme si například chaos, který nastal, když se zjistilo, že zlib, velmi široce používaná kompresní knihovna, má bezpečnostní chybu, takže každá aplikace, která obsahovala postiženou verzi, musela být aktualizována.)
  • Pokud je váš program dostatečně populární (a je open source nebo alespoň volně dostupný), mohou ho správci balíčků pro různé distribuce Linuxu chtít zabalit a zahrnout do své distribuce. Správci balíčků opravdu nemají rádi svázané knihovny. Podívejte se například na stránku Fedory k tématu.

Pokud svůj program distribuujete koncovým uživatelům, můžete zvážit nabídku balíčku (.dpkg nebo .rpm ), které si mohli jednoduše stáhnout a nainstalovat, aniž by museli používat zdroj. V ideálním případě by z pohledu koncového uživatele byl balíček přidán do repozitářů distros (pokud je open source nebo alespoň volně dostupný), aby si jej uživatelé mohli stáhnout pomocí svých správců balíčků (apt-get nebo yum ). To vše se může zkomplikovat, protože existuje velké množství linuxových distribucí, ale .dpkg kompatibilní s Debian/Ubuntu a .rpm kompatibilní s Red Hat/CentOS/Fedora by měly pokrývat dobré procento koncových uživatelů. Sestavení balíčků není příliš těžké a na internetu jsou dobré návody.


k první části vaší otázky týkající se Windows:ve Windows neexistuje žádné skutečné standardní místo pro knihovny/hlavičky, takže snadné řešení je:vytvořit si vlastní. Jednoduše poskytněte na svém systému jedinou knihovnu lib/ a include/ a nechte ji používat všechny vaše projekty (nastavením cesty v souboru cmake, který všude zahrnete). Vložte tam všechny knihovny třetích stran, například:

vaše projekty:

d:/projects/projectA
d:/projects/projectB

věci třetí strany:

d:/api/lib/lua.lib
d:/api/include/lua/....

(můžete dokonce použít symbolické odkazy aka 'directory junctions', pokud máte jinou verzi)

a odpovídající soubor cmake:

include_directories( d:/api/include )
link_directories( d:/api/lib )

Linux
  1. Úvod do sdílených knihoven Linuxu (Jak vytvořit sdílené knihovny)

  2. Flex vývoj na Linuxu, jaké je dobré bezplatné prostředí?

  3. Dynamická sdílená knihovna C++ v systému Linux

  1. Průvodce pochopením softwarových knihoven Linuxu v jazyce C

  2. Jak nastavit googleTest jako sdílenou knihovnu v Linuxu

  3. Linux:Kam umístit odkládací soubor

  1. Termux mění Android na vývojové prostředí Linuxu

  2. Jak nastavit/vytvořit proměnné prostředí a prostředí v Linuxu

  3. Jak nastavit hlavičky a knihovny pro vývoj Linuxu