2017-02-13 11 views
0

Я искал довольно много без каких-либо решений по этому вопросу, поэтому я подумал, что брошу его здесь.Ошибки при перекрестном компиляции Ubuntu в Centos GLIBCXX

У меня есть источник, который очень хорошо компилируется на Ubuntu, и я хотел бы использовать его на своей машине Centos 7. Ради этого вопроса, давайте предположим, что компиляция кода на Centos совершенно не может быть и речи.

Каждый раз, когда я иду запускать свое приложение, я получаю сообщение об ошибке «GLIBCXX_3.4.21» не найден (требуется ....) ». При поиске через libstdC++ моего Centos. So.6, я вижу, что он переходит только в GLIBCXX_3.4.19.

Как я могу скомпилировать свой код на Ubuntu с помощью libstdC++, поэтому версия, которая останавливается на 3.4.19, так что я могу легко запустить ее на Centos 7?

ответ

1

Вам понадобится построить со старым компилятором и сопутствующим libstdC++, по крайней мере так же старым, как версия GCC, поставляемая с CentOS.

Альтернативой является ссылка libgcc и libstdC++ статически, хотя есть вероятность, что вы столкнетесь с теми же проблемами с glibc, и это не может быть связано статически. Это говорит о том, что glibc вполне может испортить эту альтернативу.

Единственный «правильный» способ быть на 100% уверенным в том, что он либо компилируется на хосте CentOS, либо имеет sysroot, который реплицирует их базовую структуру системы.

Еще одна формальная альтернатива - использование [Linux LSB compiler] [1], что в значительной степени дает вам базовый уровень, с которым совместим любой уважающий себя дистрибутив Linux. Я не знаю, насколько это совместимость, поэтому я не могу поделиться опытом LSB, я знаю только о его существовании и цели.

[1] https://wiki.linuxfoundation.org/en/Developers/LSB_Tutorial