LINUX.ORG.RU

Ошибка при сборке тулчейна

 , ,


0

1

Если кто поможет, буду благодарен - первая тема на этом форуме, потому спокойно тыкайте пальцами, насмехайтесь и кидайте тапки.

При компиляции тулчейна выдает такое:

make
make[4]: Leaving directory `/home/seiza/buildroot/toolchain_build_mipsel/gcc-4.2.1-final/mipsel-linux-uclibc/libssp'
make[3]: Leaving directory `/home/seiza/buildroot/toolchain_build_mipsel/gcc-4.2.1-final/mipsel-linux-uclibc/libssp'
Checking multilib configuration for libgomp...
make[3]: Entering directory `/home/seiza/buildroot/toolchain_build_mipsel/gcc-4.2.1-final/mipsel-linux-uclibc/libgomp'
/usr/bin/make  all-recursive
make[4]: Entering directory `/home/seiza/buildroot/toolchain_build_mipsel/gcc-4.2.1-final/mipsel-linux-uclibc/libgomp'
Making all in testsuite
make[5]: Entering directory `/home/seiza/buildroot/toolchain_build_mipsel/gcc-4.2.1-final/mipsel-linux-uclibc/libgomp/testsuite'
make[5]: Nothing to be done for `all'.
make[5]: Leaving directory `/home/seiza/buildroot/toolchain_build_mipsel/gcc-4.2.1-final/mipsel-linux-uclibc/libgomp/testsuite'
make[5]: Entering directory `/home/seiza/buildroot/toolchain_build_mipsel/gcc-4.2.1-final/mipsel-linux-uclibc/libgomp'
/bin/bash ./libtool --mode=link /home/seiza/buildroot/toolchain_build_mipsel/gcc-4.2.1-final/./gcc/xgcc -B/home/seiza/buildroot/toolchain_build_mipsel/gcc-4.2.1-final/./gcc/ -B/usr/mipsel-linux-uclibc/bin/ -B/usr/mipsel-linux-uclibc/lib/ -isystem /usr/mipsel-linux-uclibc/include -isystem /usr/mipsel-linux-uclibc/sys-include -Wall -Werror -ftls-model=initial-exec -g -Os -fno-jump-tables -Wl,-z,nodlopen  -Wl,-O1   -o libgomp.la -rpath /usr/mipsel-linux-uclibc/lib -version-info 1:0:0  alloc.lo barrier.lo critical.lo env.lo error.lo iter.lo loop.lo ordered.lo parallel.lo sections.lo single.lo team.lo work.lo lock.lo mutex.lo proc.lo sem.lo bar.lo time.lo fortran.lo  -lpthread
/home/seiza/buildroot/toolchain_build_mipsel/gcc-4.2.1-final/./gcc/xgcc -B/home/seiza/buildroot/toolchain_build_mipsel/gcc-4.2.1-final/./gcc/ -B/usr/mipsel-linux-uclibc/bin/ -B/usr/mipsel-linux-uclibc/lib/ -isystem /usr/mipsel-linux-uclibc/include -isystem /usr/mipsel-linux-uclibc/sys-include -shared  .libs/alloc.o .libs/barrier.o .libs/critical.o .libs/env.o .libs/error.o .libs/iter.o .libs/loop.o .libs/ordered.o .libs/parallel.o .libs/sections.o .libs/single.o .libs/team.o .libs/work.o .libs/lock.o .libs/mutex.o .libs/proc.o .libs/sem.o .libs/bar.o .libs/time.o .libs/fortran.o  -lpthread  -Wl,-z -Wl,nodlopen -Wl,-O1 -Wl,-soname -Wl,libgomp.so.1 -o .libs/libgomp.so.1.0.0
/home/seiza/buildroot/build_mipsel/staging_dir/usr/mipsel-linux-uclibc/bin/ld: cannot find -lpthread
collect2: ld returned 1 exit status
make[5]: *** [libgomp.la] Error 1
make[5]: Leaving directory `/home/seiza/buildroot/toolchain_build_mipsel/gcc-4.2.1-final/mipsel-linux-uclibc/libgomp'
make[4]: *** [all-recursive] Error 1
make[4]: Leaving directory `/home/seiza/buildroot/toolchain_build_mipsel/gcc-4.2.1-final/mipsel-linux-uclibc/libgomp'
make[3]: *** [all] Error 2
make[3]: Leaving directory `/home/seiza/buildroot/toolchain_build_mipsel/gcc-4.2.1-final/mipsel-linux-uclibc/libgomp'
make[2]: *** [all-target-libgomp] Error 2
make[2]: Leaving directory `/home/seiza/buildroot/toolchain_build_mipsel/gcc-4.2.1-final'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/home/seiza/buildroot/toolchain_build_mipsel/gcc-4.2.1-final'
make: *** [/home/seiza/buildroot/toolchain_build_mipsel/gcc-4.2.1-final/.compiled] Error 2 

Команды locate выдают следующее:

seiza@seiza-desktop:~/buildroot$ locate libpthread.a
/usr/lib/libpthread.a
seiza@seiza-desktop:~/buildroot$ locate libpthread.so
/lib/libpthread.so.0
/usr/lib/libpthread.so
seiza@seiza-desktop:~/buildroot$

OS Ubuntu 9.10 (Новее не подходит для компиляции, ведь сам тулчейн очень старый, и единственный в своем роде) Перерыл все интернеты, но ничего дельного не нашел, 32 битная версия библиотек не помогает, как и запихивание их в /staging_dir/lib - выдает skipping incompatible

Наврядли этому кросскомпиляторному OpenMP (libgomp) помог бы хостовый libpthread. Как помочь я не знаю, из кросскомпиляторов на онтопик собирал только mingw, но помню что собирается он хитро по кусочкам за несколько раз, в том числе и из-за pthread.

d_a ★★★★★ ()
Последнее исправление: d_a (всего исправлений: 1)

Таки cross-compilation, не native видится мне.

Вопрос уточняющий.

Перед началом компиляции, ./configure должен был проверить имеющиеся библиотеки, cc и ld.

Дайте в очи ваши логи конфигурации - config.log config.cache и разыщите в них ключевое слово pthread.

blitz ()

У вас ошибка связывания. Попробуйте применить GCC 4.6.4 или использовать для сборки виртуалку со старым ядром и системным окружением.

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

Это и есть виртуалка со старым ядром и системным окружением

Seiza-chan ()
Ответ на: комментарий от Seiza-chan

Ошибка нашлась.

Вот она:

configure:1253: creating cache ./config.cache
configure:1348: checking for --enable-version-specific-runtime-libs
configure:1365: result: no

runtime-libs, включая phtreads - не нашлись.

blitz ()
Ответ на: комментарий от Seiza-chan

Да, можно.

runtime-libs, это те libs, на отсутствие которых вам ясно указал скрипт ./configure

И в дальнейшем, при линковке, линкер ясно дал знать, какую именно lib не смог найти

linux-uclibc/bin/ld: cannot find -lpthread

Ваши проблемы исчезнут, когда посмотрите в эти строки 1253/1348/1365 ./configure

blitz ()
Ответ на: комментарий от Seiza-chan

Кажется, нужны какие-то особенные либы, связанные с версией GCC?

Почему же «кажется»? Что угодно не соберётся если нет нужных для сборки этого либ. Про то, что либы нужны именного того кросс-окружения, в котором собираете тут уже много кто сказал.

vodz ★★★★★ ()
Ответ на: комментарий от Seiza-chan

Я знал, что ты сумеешь разобраться, with little help from your friends.

Теперь же, подумай о том - где и как найти того кодера, кто написал ./configure

Проще всего и быстрей получится, если задать вопрос в OpenMP коммьюнити.

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

OpenMP комьюнити - слишком закрытая экосфера и, видимо, там уже почти никого нет... На форум их не попасть, не зарегистрироваться, в документах ничего дельного нет, ведь версия OpenMP там используется еще старше - аж за 2003 год.

Seiza-chan ()
Ответ на: комментарий от Seiza-chan

Тогда - самому искать ошибку в configure. Так полагаю, что этот скрипт, по прошествию лет, имеет проблемы с современными библиотеками.

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

Нашлись нужные библиотеки. Та самая библиотека libpthread, так нужная конфигуратору, была обнаружена... Прямо на месте, где и должна быть. http://i.imgur.com/DAyfCi0.png Осталось понять, что не нравится конфигуратору и как исправить положение?

Seiza-chan ()

Я просто выключил в настройках тулчейна необходимость в libgomp и вообще треадсах. Всем спасибо за помощь!

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