Вопрос о переносимости исполняемых файлов
От: plastictown Норвегия  
Дата: 19.10.20 23:43
Оценка:
Доброго времени суток!

Не так давно вышел релиз 10-го gcc с поддержкой execution и других клевых штук. Очень хочется все это использовать, однако целевая платформа — CentOS7 amd64.
Если упаковать все по-максимуму в бинарник (бинарник как исполняемый файл, так и so-библиотека), все равно останется зависимость от libc6 и мне скажут что-то про версию ABI и все на этом закончится.
Есть ли возможность запустить бинарник, собранный на свежем дистрибутиве со свежим компилятором на такой целевой ОС? И попутно вопрос, почему статические библиотеки на дистрибутивах x86_64 собираются без флага -fPIC,
т.е. если я компоную на x86 libboost_system.a, то все ок, если на x86_64, то линкер мне скажет "иди собери руками и возвращайся".
И вот идешь и пересобираешь тот же буст, да и все остальное, с указанием -fPIC и тогда все компонуется.
Почему так? Возможно ли в принципе статически приделать libc и сделать бинарник (особенно интересно для so), независимый от libc на машине?
Если да, то не придется ли пересобирать для этого libc?

Спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.