LINUX.ORG.RU

Установка GCC 4.3 на SuSE 11.2


0

0

Здравствуйте. У меня следующий вопрос. Мне необходимо скомпилировать Google Android 1.5 под SuSE 11.2. Рекомендуемая версия GCC для этих целей - 4.3, а по умолчанию с данным дистрибутивом устанавливается GCC 4.4 Я скачал исходники и собрал GCC 4.3.4:

./configure

make

make install

(всё - под sudo)

Сборка прошла успешно, все бинарники и прочие файлы были скопированы в местоположение по умолчанию (/usr/local/bin и т.п.) Я также поменял ссылки gcc и g++ в каталоге /usr/bin на соответствующие бинарники из свежесобранного GCC 4.3.4.

Проблема в том, что при запуске make Android'а я получаю следующую ошибку:

/usr/lib/gcc/i586-suse-linux/4.4/cc1: /usr/local/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libppl_c.so.2)

/usr/lib/gcc/i586-suse-linux/4.4/cc1: /usr/local/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libppl.so.7) 

/usr/lib/gcc/i586-suse-linux/4.4/cc1: /usr/local/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /usr/lib/libgmpxx.so.4)

Т.е. запускается cc1 из установленного вместе с системой GCC 4.4, что порождает конфликты версий библиотек.

При этом по команде

gcc --print-prog-name cc1

я получаю

/usr/local/libexec/gcc/i686-pc-linux-gnu/4.3.4/cc1

И то же самое - для /usr/bin/g++. Т.е. gcc и g++ из /usr/bin верно ссылаются на cc1 своей версии, но при запуске Makefile Android'а всё равно запускается cc1 из старой версии. Хотелось бы узнать причины столь странного поведения.

На всякий случай: ./configure для Android'а не делается, Makefile там изначально готовый.

Извините за возможно ламерский вопрос.


нужно было делать иначе:

./configure --prefix=/usr/local/gcc-4.3 (другие опции)
make
make install

перед сборкой того что требуется ставите переменные

export CC=/usr/local/gcc-4.3/bin/gcc
export CXX=/usr/local/gcc-4.3/g++
export PATH=/usr/local/gcc-4.3/bin:$PATH

далее конфигурируете и собираете то что вам нужно

Sylvia ★★★★★ ()

ps: а в suse точно нет старых версий gcc в репозиториях ?
в дебиане 4.1 даже держат, и 3.х какую то кажется тоже

Sylvia ★★★★★ ()
Ответ на: комментарий от Sylvia

Большое спасибо за ответ.
Сейчас попробую первый способ решения проблемы - соберу GCC заново. Попытался вчера просто поменять переменные окружения, но это не помогло.
В репозитории версии 11.1 нашёл GCC нужной версии, удалось его загрузить и он даже якобы установился... но никаких изменений не наблюдается в итоге, хотя установка успешно прошла - gcc -v по-прежнему говорит лишь о старой версии.

rds ()
Ответ на: комментарий от rds

>Попытался вчера просто поменять переменные

gcc -v по-прежнему говорит лишь о старой версии.


для этого и ставится PATH с путем префикса нового gcc вначале,
хотя для большинства нормальных пакетов билд системы настроены на то чтобы использовать то, что задано в CC и CXX , а не gcc и g++

Sylvia ★★★★★ ()
Ответ на: комментарий от Sylvia

для этого и ставится PATH с путем префикса нового gcc вначале,

Проблема в том, что я не нашёл новых бинарников. Нигде. Старые - на месте.

Сейчас я переустановил систему (та же 11.2) и снова собрал GCC 4.3 в отдельном каталоге, не затрагивая старую версию. Установил и экспортировал переменные окружения. Теперь получаю совсем другую ошибку... Она хоть и косвенно, но таки связана с версией GCC:

make: *** No rule to make target: `../../../../bin/gcj-4.4', needed by `out/target/docs/offline-sdk-timestamp'. Stop.

Makefile дефолтный. В чём может быть дело - ума не приложу.

rds ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.