Моей средой является arm-linux-androideabi (Android 2.2 на Toshiba AC100). У меня есть 2 комплекта GCC компиляторов для моей среды (устанавливается в отдельных местах на устройстве):Можно ли смешивать разные версии gcc и ld?
- 4.4.3 (Android NDK on Android)
- 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
) терпит неудачу при компоновке и создании статической библиотеки.
Мои вопросы:
- Можно ли использовать GCC-4.4.3 для компиляции своих объектных файлов (
gcc-4.4.3 -c input.c
), а затем связать с ЛД-4.6.0 (ld-4.6.0 -o input input.o -lc
)? То есть я удалю проблемные двоичные файлы и использую комбинацию рабочих двоичных файлов для создания проектов. - Если есть оговорки, то что это такое?
Не пробовал, но мне интересно, какие библиотеки (заголовки) будут использовать компилятор и какой компоновщик свяжет. Вероятно, вам придется рассказать им ... – dbrank0
Как только я разместил этот вопрос, я понял, что мог бы попробовать и посмотреть. Однако, как показывает ваш комментарий, есть много предостережений, которые мне нужно изучить. – Samveen