Kompilacja cross-distribution linux

2

Cześć!

Mam kilkaset serwerów gdzie jestem zwykłym userem.
Na serwerach odpalone są daemony pisane w pythonie, teraz przerobiłem skrypty na c++ żeby efektowniej były wykonywane obliczenia i żeby trochę mniej płacić za zużycie CPU.

Niestety zmagam się z problemem kompilacji programu(w standardzie c++98):

  • część serwerów nie ma kompilatorów (nie mam uprawnień roota żeby doinstalować).
  • mix systemów w przeróżnych wersjach: debian, ubuntu, slackware, gentoo, jakieś totalne noname

Próbowałem kompilować u siebie w g++ z flagą -static, lecz kończy się to na Segmentation fault,
bez flagi nie pasują wersje bibliotek /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version GLIBCXX_3.4.21 not found (required by ./recalc-1.0-alfa)

Aktualnie program potrzebuje:

$ ldd recalc-1.0-alfa
        linux-vdso.so.1 (0x00007ffcbb9de000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fb9b0b8d000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb9b0889000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fb9b0672000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb9b02d3000)
        /lib64/ld-linux-x86-64.so.2 (0x000055bb1c7f6000)

Nowsze biblioteki są kompatybilne wstecz?
Jeśli tak, czy można ustawić przy kompilacji żeby używał niższej wersji bibliotek?
Czy jest jakaś możliwość dystrybuowania programu bez ujawniania źródła?
Po prostu, czy da się przekompilować program, który będzie się odpalał na różnych dystrybucjach linucha?

0

Da się zrobić jeszcze coś więcej niż -static: -static-libstdc++ -static-libgcc

https://stackoverflow.com/questions/13636513/linking-libstdc-statically-any-gotchas

Ogólnej i pełnej odpowiedzi na twój problem nie znam.

1
  1. Czasami możesz używać kodu skompilowanego z niższą wersją i ładować bibliotekę z wyższą, w drugą stronę nie
  2. Tak, linkujesz z niższą wersją biblioteki
  3. Tak
  4. Tak

Zainteresuj się musl i kompilacją statyczną. To będzie najprostsze.

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