2016-03-05 5 views
3

Я пытаюсь построить GCC как кросс-компилятор для AIX; платформами хоста и сборки являются Linux x86_64, целью является powerpc-aix5.2.0. Мне удалось перекрестно скомпилировать Binutils 2.20.1 и GCC 4.4.7 с родными заголовками AIX 6.1 (от /usr/include) и libs (только /usr/lib/{crt0.o,crt0_64.o, libc.a, libc_r.a, libpthreads.a}). Тогда НКА правильно кросс-сборка простого кода C (например, «Привет, мир!») В автономные исполняемые файлы, но он отказывается перекрестно сборки общих объектов:Может ли кросс-компиляция GCC для AIX?

collect2: функция инициализации найдена в объекте < пути перекрестные скомпилированные libgcc_s.a>

Я попытался использовать новые версии Binutils до 2,26 с тем же результатом.

Тогда я нашел следующее: comment

Binutils был обновлен для поддержки AIX 4.3.3, но не поддерживается, улучшены или обновлены для AIX 5. Это может сделать простые вещи, но не полностью поддерживает более сложные функции. Например, некоторые аспекты создания общих объектов не завершены.

Так что я попытался вновь строить вышеупомянутую набор инструментов с целевым = PowerPC, aix4.3.0 (той лишь разницей, на этот раз был то, что я настроил GCC с --disable-мультибиблиотечностью избежать ошибок «Непризнанный опкод: `fmsub '"). Я попробовал как Binutils 2.20.1, так и Binutils 2.26, но у меня все еще есть ошибка Функция init найдена в объекте libgcc_s.a.

Теперь мне интересно, есть ли версия AIX, для которой кросс-компиляция, особенно. общих объектов, поддерживается GCC и Binutils.

+1

Почему бы не скомпилировать с AIX? Это довольно сложная платформа сама по себе, вам не нужно делать ее еще более проблематичной с кросс-компиляцией. –

+0

@ ZsigmondLőrinczy. Существует множество причин: корпоративная сетевая политика запрещает подключать устаревшие/непроверенные операционные системы к сети компании. Вы хотите использовать фанки новый инструмент сборки, который не поддерживается или легко компилируется на этой платформе. Вы хотите, чтобы сборка выполнялась быстрее, а старое оборудование ограничивает скорость сборки. Ваше оборудование не работает, и у вас нет бюджета или желания заменить его. Вы не можете виртуализировать свои машины сборки, и вам нужно. Старое оборудование/ОС не работает с вашим программным обеспечением резервного копирования. – Keeely

+0

Ну, используя такие кросс-скомпилированные двоичные файлы - это всегда игра: она либо будет работать, либо нет. (Чтобы быть откровенным, то же самое касается и всех других программ). –

ответ

2

Ответ на ваш вопрос - «нет». Как отмечается в комментарии, GCC-версия компоновщика (ld) на самом деле не работает для AIX. Весь открытый исходный код, который я компилирую в AIX, я использую GCC, но я использую собственную команду ld.

+0

Я думал, что комментарий подразумевал, что AIX 4.3.3 был * полностью * поддерживается, и это была AIX 5, где поддерживались только простые вещи. – SJU

Смежные вопросы