Wyodrębnienie kompilatorów do osobnego folderu na Linuxie

0

Cześć,

mam w systemie zainstalowane GCC i Clang. Chce je wyodrębnić do osobnego folderu, w którym mam również kody źródłowe programów. Chodzi o to, aby można było później ten folder skopiować do innego systemu i rozpocząć kompilację plików przy użyciu dołączonych kompilatorów. Przy czym chciałbym skopiować wyłącznie pliki niezbędne do kompilacji C++. C mnie nie interesuje. Słabo znam Liunxa. Dzięki za pomoc albo przynajmniej dobre wskazówki

0

Po pierwsze do C++ potrzebujesz G++ a nie GCC (aczkolwiek system automatycznie cię "przełączy")
Po drugie poszukaj wersji "portable" (o ile takowa istnieje) bez tego to niewykonalne. Za dużo zależności i potrzebnych bibliotek systemowych w konkretnych wersjach / ich przedziałach.

0

Wiem. GCC to także nazwa zestawu wszystkich kompilatorów projektu GNU.
Skoro jest to niewykonalne, to w jaki sposób zainstalować wiele różnych wersji GCC tak, żeby śmigały pod różnymi nazwami? Np. wersja 8.1 odpalana jako g81++, wersja 7.1 jako g71++, wersja 4.9.3 jako g493++... itd?

0

Musisz mieć w systemie osobne pakiety GNU Compiler Collection - jak to jest np. w Arch-u zrobione (AUR). Każdy taki pakiet GCC jest kompilowany pod indywidualną ścieżkę lib-ów i inną nazwę binarek. I wtedy możesz sobie używać jakiegokolwiek kompilatora podając jego nazwę - np. gcc-4.6 lub gcc-5.3.

4

Do takich rzeczy powstał docker. Ściągnij dockera i obraz z GCC/Clang i masz już przenośne środowisko, nie tylko gcc, ale cały system jaki jest potrzebny. W ten sposób unikasz niezgodności wersji bibliotek-zależności, która prawdopodobnie nastąpi jeśli tak po prostu przeniesiesz binarki. Inną opcją jest skompilować GCC/clang ze źródeł, statycznie linkując biblioteki. Tylko nie wiem po co tyle zabawy skoro większość dystrybucji ma managery pakietów i można jednym poleceniem zainstalować te rzeczy, no chyba że masz problem z przenośnością między wersjami kompilatora.

3
Cpp17 napisał(a):

Chodzi o to, aby można było później ten folder skopiować do innego systemu i rozpocząć kompilację plików przy użyciu dołączonych kompilatorów.

To nie zadziała. Bo nie tylko musisz mieć dobry kompilator, ale również odpowiednie (kompatybilne) wersje wszystkich zależności (i to zależności kompilatora, a nie projektu). No i (mam nadzieję, że to oczywiste) będzie to działać tylko w obrębie jednego systemu operacyjnego.

Docker jest tutaj jednym z najprostszych rozwiązań (ale nie jedynym).

Coś mi się wydaje, że mamy tutaj XY problem.

0
Lampart napisał(a):

Musisz mieć w systemie osobne pakiety GNU Compiler Collection - jak to jest np. w Arch-u zrobione (AUR). Każdy taki pakiet GCC jest kompilowany pod indywidualną ścieżkę lib-ów i inną nazwę binarek. I wtedy możesz sobie używać jakiegokolwiek kompilatora podając jego nazwę - np. gcc-4.6 lub gcc-5.3.

Rozumiem i podoba mi się takie rozwiązanie, ale nie bardzo wiem, jak się za to zabrać. Jakimi komendami to wgrać, żeby się wszystko nie nadpisało?

To rozwiązanie z dockerem też jest ciekawe, tylko nie wiem, czy nie za głęboko jak na początek. XY powiadasz... no potrzebuję po prostu różnych zestawów kompilatorów do kompilacji i testów. Myślałem, że pójdzie lekko jak na Windowsie, gdzie sobie pokatalogowałem porty MinGW, porobiłem odpowiednie skrypty i mogę to w 30 sec. przenieść na inną platformę sprzętową. No ale pogodziłem się już z faktem, że się nie da na Linuxie tak zrobić i teraz wystarczy mi, żebym jakkolwiek mógł te różne zestawy GCC wgrać.

1

Po prostu w Archu instalujesz sobie systemowe gcc7 a potem budujesz pakiety GCC alternatywne z AUR-a: https://aur.archlinux.org/packages/gcc48-alternative-multilib/ https://aur.archlinux.org/packages/gcc49-alternative-multilib/ lub https://aur.archlinux.org/packages/gcc53-alternative-multilib/ przy pomocy makepkg i tyle. Te pakiety gcc*-alternative są tak zrobione, żeby się wzajemnie nie nadpisały. Musisz je sobie tylko przekompilować.

0

@Cpp17 czy Ty przypadkiem nie potrzebujesz zwykłego CI? Skoro mówisz, że to do testów, to po kiego grzyba Ci to w tym samym folderze co kody źródłowe? No i o przenoszeniu plików wykonywalnych na inną platformę sprzętową zapomnij. To nie zadziała (o ile nie masz tzw. "fat binaries" a Linuks takowych nie wspiera).

0

Drodzy Panowie! Wiem, że piszę o czymś innym niż LibreOffice, ale to nie znaczy, że mam jakiekolwiek pojęcie o Linuxie ;( Potrzebuję poprowadzenia za rączkę albo poradnika dla dzieci.

Fajnie, że dostałem linki do pakietów alternatywnych GCC. Czy one (poza nazwami) niczym się nie różnią od tych standardowych?

@hauleth nie wiem, co to zwykłe CI. Chciałem mieć to w jednym folderze, żebym mógł sobie przyjść z pendrivem do Pani Marysi, która ma ubuntupodobny system i odpalić plik run.sh, który skompiluje mi kody źródłowe w pięciu różnych wersjach pakietów GCC i Clang. Tak, żebym już u Marysi nie musiał żadnych makepkg, apt get i innych cudów robić. Marysia nie ma Internetu i nawet nie wie, co to jest komputer (czyli jest dziesięć razy głupsza niż ja). Ona potrafi tylko odpalić plik run.sh.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0