2016-12-02 13 views
2

Я использую встроенную систему ARM (ARM9), которая запускает встроенное ядро ​​Linux. Ядро было скомпилировано с GCC 4.5.x с eglibc. Есть ли какой-либо вред, исполняемый двоичный код, который скомпилирован с кодом GCC 4.8.x или новее, который использует glibc.Компиляция с glibc и запущенным ядром, которое скомпилировано с помощью eglibc

Я читал, что вы не должны смешивать и сопоставлять libc по причине стабильности. Но насколько я понимаю, они оба совместимы с ABI, поэтому у них не должно быть никаких проблем.

Некоторые из кода, который я использую, требуют правильной компиляции STD11, и поэтому я не могу использовать GCC4.5.

ответ

1

Ядро было компилировать с GCC 4.5.x с eglibc

Ядро сборки не использует GLIBC, так что это совершенно не имеет значения, что Libc был (не) используется для сборки ядра.

Есть ли какой-либо вред, исполняемый двоичный код, который скомпилирован с кодом GCC 4.8.x или новее, который использует glibc.

No.

Что происходит, когда бинарные ссылки против LIBC? Он был связан с glibc, когда кросс-компиляция, но будет связываться с eglibc, что в sysroot.

В общем, GLIBC и EGLIBC гарантируют обратную совместимость: то есть двоичный файл, связанный с GLIBC-x.y будет работать отлично против любого GLIBC, не старше x.y.

И отклонение EGLIBC от GLIBC весьма минимально. EGLIBC разрешил отключать определенные функции. Бинарный файл, связанный с EGLIBC-xy, будет работать нормально, если во время выполнения он обнаружит GLIBC, который не старше xy (GLIBC будет иметь функции, которые не будут использоваться двоичным кодом (IF EGLIBC фактически отключил некоторые функции), но это обычно в любом случае: это редкий для бинарной использовать каждый GLIBC интерфейс

+0

что происходит, когда бинарные ссылки против LIBC это было связано с Glibc при кросс компиляции, но будет связывать с eglibc, что в SYSROOT – DontKnow

+0

@DontKnow Я.?. обновил ответ. –