как я могу скомпилировать любой C / C ++ с новым компилятором и общими библиотеками, чтобы нормально работать со старыми общими библиотеками?
Вы не можете сделать это надежно, если API (или даже ABI , включая размер и выравнивание внутренних структур, смещения полей, vtables организация) этих библиотек изменилась несовместимо.
В общем, вам лучше перекомпилировать исходный код на другом компьютере (и ваш колледж может запретить это, если этот источник не связан с вашим образованием). Кстати, если ваш исходный код находится в каком-либо репозитории git
(например, github , если он с открытым исходным кодом), перенос на несколько компьютеров очень прост.
Некоторые очень немногие библиотеки предпринимают подлинные (и документированные) усилия по обеспечению совместимости с другими их версиями в двоичном виде (например, на уровне ABI), но это не обычно. Традиционное бесплатное программное обеспечение Unix и заботится о совместимости на уровне исходного кода. А стандарт POSIX заботится только о совместимости с источниками.
Вы можете рассмотреть возможность использования некоторой среды chroot (см. chroot (2) и path_resolution (7) & учетные данные (7) ) чтобы иметь основные части вашего старого дистрибутива на вашем новом. Подробности зависят от дистрибутива (в Debian и Ubuntu см. Также schroot и debootstrap ). Вы также можете запустить полный дистрибутив на некоторых виртуальных машинах или использовать контейнеры в стиле Docker.
И вы можете попытаться связать (локально) свой исполняемый файл статически, поэтому скомпилируйте и свяжите с g++ -static