2012-05-06 4 views
0

Моей средой является arm-linux-androideabi (Android 2.2 на Toshiba AC100). У меня есть 2 комплекта GCC компиляторов для моей среды (устанавливается в отдельных местах на устройстве):Можно ли смешивать разные версии gcc и ld?

  1. 4.4.3 (Android NDK on Android)
  2. 4.6.0 (R + GCC on Android)

Проблема I что gcc-4.6.0 segfaults всякий раз, когда он запускается (однако он успешно запускает каждую задачу, просто выполняет segfault в конце, вероятно, в процедурах выхода), в то время как ld-4.4.3 и ar-4.4.3 не работают моя среда. С другой стороны, gcc-4.4.3 работает красиво, как и ld-4.6.0 и ar-4.6.0.

Таким образом, при построении на моем устройстве, если я запустил configure с использованием 4.4.3, он завершится неудачно на этапе настройки, потому что, даже если тестовые программы configure скомпилированы успешно, gcc segfaults и возвращает ненулевое значение (139). Однако, если я запускаю configure с 4.6.0, configure работает достаточно хорошо, но сборка (make all) терпит неудачу при компоновке и создании статической библиотеки.

Мои вопросы:

  1. Можно ли использовать GCC-4.4.3 для компиляции своих объектных файлов (gcc-4.4.3 -c input.c), а затем связать с ЛД-4.6.0 (ld-4.6.0 -o input input.o -lc)? То есть я удалю проблемные двоичные файлы и использую комбинацию рабочих двоичных файлов для создания проектов.
  2. Если есть оговорки, то что это такое?
+0

Не пробовал, но мне интересно, какие библиотеки (заголовки) будут использовать компилятор и какой компоновщик свяжет. Вероятно, вам придется рассказать им ... – dbrank0

+0

Как только я разместил этот вопрос, я понял, что мог бы попробовать и посмотреть. Однако, как показывает ваш комментарий, есть много предостережений, которые мне нужно изучить. – Samveen

ответ

-1

Вы можете вызвать gcc, используя сценарий оболочки, чтобы скрыть код неудачного выхода.

+0

Я уже это делаю. Тем не менее, он имеет недостаток, что gcc-обертка вернет true, даже если компиляция завершится неудачно, так как код выхода последовательно возвращается к ошибке сегментации (139). – Samveen

+0

Возможно, вы могли проверить, был ли произведен исполняемый файл, и вернуть успех, иначе верните код ошибки? Конечно, все это продолжает быть взломом ... – gfour

+0

Конечно, это будет взломать. Таким образом, вопрос ... – Samveen