/ / Unikanie zbyt specyficznych zależności - c, linux, build, dependencies, shared-libraries

Unikanie zbyt specyficznych zależności - c, linux, build, dependencies, shared-libraries

Używam wspólnej biblioteki C w systemie Linuxdystrybuowane w formie binarnej. Problem polega na tym, że zależności są ustawione tak, aby wymagały dokładnie wersji dostępnych na maszynie programistycznej. Na przykład każde wydanie wymaga (w tym czasie) najnowszej wersji glibc i tylko dokładnej wersji libreadline w ich systemie.

Skontaktowałem się z programistami, a oni niewiedzieć, co z tym zrobić. O ile mogę powiedzieć, nie świadomie korzystają z najnowszych funkcji, więc biblioteka powinna nadal pracować ze starszymi zależnościami. Myślę, że używają gcc na Linuksie, ale używają też złożonego systemu make do kontrolowania innych kompilatorów do kompilacji pod Windows i Unix.

W jaki sposób iw jakim stopniu można zarządzać procesem kompilacji, aby biblioteka wymagała zależności tylko od wystarczającej wersji, a także zaakceptować późniejsze wersje?

To było pokrewnym pytaniem.

Edytować: Aby było jasne, chcę wiedzieć, jak tworzyć programywięc będą akceptować zależności z określonym numerem wersji lub późniejszymi numerami. Niezależnie od tego, czy programiści ją skompilują, czy ja, chcę móc dystrybuować plik binarny, który nie wymaga dokładnie wersji zależności obecnych w środowisku kompilacji.

Edytuj 2: Po ponownym zadaniu tego pytania zdałem sobie sprawę, że zostało to już wielokrotnie omówione. Niektóre z najlepszych pytań i odpowiedzi:

Rozmieszczanie Yesod na Heroku, nie może budować statycznie

Skompiluj ze starszą biblioteką libc

Łączenie ze starą wersją libc

Jak mogę utworzyć link do konkretnej wersji glibc?

Odpowiedzi:

1 dla odpowiedzi № 1

To nie jest zbyt inspirujące. Powinny one opierać się na stabilnej wersji podstawowej, może to być wirtualna instalacja. Niektóre wersje systemu Linux, skopiuj środowisko kompilacji, aby pakiety nie były powiązane ze zaktualizowanymi wersjami bibliotek.

Usługa kompilacji openSUSE umożliwia programistom tworzenie pakietów binarnych dla szerokiej gamy http://openbuildservice.org/about/

IIRC readline to program GPL i kontrola http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html#Availability sugeruje, że jest to GPL v 3, więc mogą byćnaruszenie GPL, jeśli używają funkcji libreadline i powinni dostarczyć ci źródło do swojej biblioteki. Nie jestem pewien, czy masz na myśli zależności rpm / apt, czy też ich biblioteka nazywa się libreadline.

Zawsze możesz wyodrębnić pliki z pakietów rpm lub apt, jeśli to konieczne, aby uniknąć problemów z oprogramowaniem, spowodowanych złym pakowaniem.