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

Allegro 5 Linux - kompilacja ze statycznie zlinkowaną biblioteką

Object Storage Arubacloud
0 głosów
210 wizyt
pytanie zadane 19 stycznia 2019 w C i C++ przez niezalogowany
Witam, od kilku dni staram się skompilować mój projekt, tak żeby można go było uruchomić na innym komputerze bez dołączania biblioteki Allegro. Dowiedziałem się, że potrzebuje skompilować pliki ze statycznie zlinkowaną biblioteką. Niestety znalezione w internecie porady mi nie pomagają. W folderze /usr/lib posiadam pliki o rozszerzeniu (.a) z biblioteki Allegro (dodam, że u innych miały one w nazwie -static, u mnie tak  nie ma), lecz gdy próbuje skompilować pliki z flagą --static dalej wykorzystywane są pliki do linkowania dynamicznego. Co muszę zrobić, żeby skompilować mój projekt ze statycznie zlinkowaną biblioteką Allegro?
komentarz 24 sierpnia 2019 przez Ad19am94 Początkujący (440 p.)
Nie znam się najlepiej ale wydaje mi się że jeżeli podlinkujesz plik(.a) ze wszystkimi definicjami allegro to możesz dodawać: #include <allegro5/allegro_image.h> #include <allegro5/allegro_audio.h> i inne nagłówki a po skompilowaniu program powinien wymagać tylko 1 DLL o tej samej nazwie co plik(.a).
komentarz 24 sierpnia 2019 przez tkz Nałogowiec (42,000 p.)

Czy można kompilować statycznie za pomocą gcc lub g ++ w systemach Linux?

To zależy.

Możesz spróbować skompilować i połączyć cały swój kod za pomocą gcc -staticlub g++ -static. W kilku przypadkach (np. Aplikacje wiersza poleceń, takie jak twój hello world), zadziałałoby.

Dystrybucje systemu Linux, podobnie jak wiele bibliotek współdzielonych. Większość z nich intensywnie korzysta z bibliotek współdzielonych (szczególnie do aplikacji graficznych). Przeczytaj artykuł Drepper's How to Write Shared Libraries, aby uzyskać więcej.

Być może masz problemy z licencjonowaniem. Aby oburzająco uprościć, wysyłanie kodu statycznie połączonego z biblioteką LGPL (lub GPL) może być nielegalne (wbrew licencji LGPL ). Zło tkwi w szczegółach.

Niektóre podstawowe funkcje, szczególnie związane z DNS (np. Getaddrinfo (3) i getnameinfo (3) ) są wewnętrznie wykorzystujące techniki wtyczek à la dlopen (3) , więc sortowanie wymaga dynamiki libc.so(więcej informacji znajduje się w nsswitch.conf (5) ).

Niektóre rzeczy związane z X11 , w szczególności związane z czcionkami, również oczekują rzeczy związanych z wtyczkami (IIRC, Xft); być może SFML ich używa. BTW, SFML najprawdopodobniej jest zainstalowany jako biblioteki współdzielone, więc musisz odbudować SFML z kodu źródłowego ...

Wreszcie statycznie połączony program może być bardziej powiązany z pewną konkretną wersją jądra niż z wersją dynamicznie połączoną (w zasadzie tak nie jest). Może się zdarzyć, że możesz mieć niezgodności z bardzo starymi lub przyszłymi jądrami (ale zwykle nie).

Zobacz także ldd (1) , plik (1) , pmap (1) , proc (5) , vdso (7)

W rzeczywistości łatwiej może być dostarczenie kodu źródłowego do systemu docelowego, poproszenie administratora systemu o zainstalowanie wymaganych zależności i zbudowanie kodu na zdalnym celu (np. Przy użyciu ssh)

Możesz spróbować połączyć statycznie większość bibliotek, ale nie wszystkie (np. Link statycznie libstdc++.ai dynamicznie libc.so), grając z opcjami łączenia GCC . Zobacz to i tamto

Być może najpierw spróbujesz połączyć statycznie jakieś demo SFML .... lub po prostu scp(dynamicznie połączony) program binarny i spróbować uruchomić go zdalnie (może być w stanie uruchomić).

https://stackoverflow.com/questions/32224494/is-it-possible-to-compile-statically-with-gcc-or-g-on-linux-based-systems

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
3 odpowiedzi 958 wizyt
pytanie zadane 30 października 2015 w C i C++ przez Caspariano Użytkownik (760 p.)
0 głosów
1 odpowiedź 133 wizyt
pytanie zadane 18 stycznia 2019 w Systemy operacyjne, programy przez Rosol Kuba Początkujący (380 p.)
0 głosów
1 odpowiedź 148 wizyt
pytanie zadane 17 stycznia 2019 w C i C++ przez niezalogowany

92,576 zapytań

141,426 odpowiedzi

319,651 komentarzy

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

...