Jump to content

    

AxaRu

Участник
  • Content Count

    7
  • Joined

  • Last visited

Community Reputation

0 Обычный

Контакты

  • Сайт
    Array

Информация

  • Город
    Array
  1. Огромное спасибо, что нашли время для моей задачи. Человек с LOR'a нашел баг в libtool и предложил вот еще один способ решения костылем: CC='mips-linux-gnu-gcc -EL' http://www.linux.org.ru/forum/development/...comment-5389074 Еще один способ решения: http://forum.vingrad.ru/index.php?showtopi...t&p=2220699
  2. К сожалению, нет. Результат тот же. Как вариант, остался собрать toolchain под архитектуру mipsel.
  3. Я так и сделал. Обе библиотеки с флагами "CFLAGS='-EL' CXXFLAGS='-EL'"пересобрал Вот нашел эту статью. Вроде как по моей теме: Avoiding libtool minefields when cross-compiling
  4. $ mips-linux-gnu-gcc -EL -o hello1 hello.c Да, именно с этим ключем пример удачно запускается на целевой системе. Но как только я указываю этот ключ при сборке библиотеки $ CC=mips-linux-gnu-gcc \ AR=mips-linux-gnu-ar \ RANLIB=mips-linux-gnu-ranlib \ LDFLAGS="-L/home/akhromov/CodeSourcery/staging_dir/lib" \ CPPFLAGS="-I/home/akhromov/CodeSourcery/staging_dir/include" \ CFLAGS='-EL' CXXFLAGS='-EL' \ ./configure --prefix=/home/akhromov/CodeSourcery/staging_dir --host=mipsel-linux-gnu результатом становится ошибка сборки: home/akhromov/CodeSourcery/staging_dir/lib/libz.so: could not read symbols: File in wrong format collect2: ld returned 1 exit status make[1]: *** [libpng14.la] Error 1 make[1]: Leaving directory `/home/akhromov/Stuff/libpng-1.4.1' make: *** [all] Error 2 Уважаемый AxaRu. Как новичку, не имеющему ящика личных сообщений, делаю Вам пока устное замечание. 1. Не следует раздувать сообщение пробельными строками. 2. Не следует "поднимать" сообщение, чтобы привлечь к нему внимание. 3. Вообще, почитайте вдумчиво правила. Модератор.
  5. Спасибо за помощь Ок. Убрал экспорты '-EL -march=74kc -fPIC'. Все откомпилировалось без ошибок. Но терзают меня сомнения. Вот какие: #include <stdio.h> int factorial(int n) { if (n == 0) return 1; return n * factorial (n - 1); } int main () { int i; int n; for (i = 0; i < 10; ++i) { n = factorial (i); printf ("factorial(%d) = %d\n", i, n); } printf ("Hello Popcorn!\nThis cool!\n"); return 0; } Компилирую: $ mips-linux-gnu-gcc -o hello hello.c $ mips-linux-gnu-gcc -EL -march=74kc -fPIC -o hello1 hello.c Запускаю на железке: sh-3.00# ls hello hello1 sh-3.00# ./hello sh: ./hello: cannot execute binary file sh-3.00# ./hello1 factorial(0) = 1 factorial(1) = 1 factorial(2) = 2 factorial(3) = 6 factorial(4) = 24 factorial(5) = 120 factorial(6) = 720 factorial(7) = 5040 factorial(8) = 40320 factorial(9) = 362880 Hello Popcorn! This cool! sh-3.00# То есть, скомпиленная без ключей архитектуры (точнее без ключа "EL") программа не захотела запускаться.
  6. Да, пробелы после <-I> и <-L> я убрал, и на команду линковки уже не ругается. Но все равно ругается на несовместимость библиотек. Как будто она берет файл не из --prefix=/home/akhromov/CodeSourcery/staging_dir, а из системы. PS. Где то пробегало сообщение, что GCC 4.3 - якобы весь глючный. C GCC 4.4 - все то же самое. То есть дело не в версии компилятора.
  7. Здравствуйте. Прошу помочь мне с решением следующей проблемы. Я хочу откомпилирвать midnight commander для медия плеера hdx bd-1 : http://www.hdx1080.com Железка собрана на процессоре Sigma Designs SMP8642. Внутри установлен linux sh-3.00# uname -a Linux tango3 2.6.22.19-27-sigma #11 PREEMPT Wed Aug 25 13:46:30 CST 2010 mips GNU/Linux На Ubuntu 10.04 в каталог /home/akhromov/CodeSourcery я установил Sourcery G++ Lite 4.3-51 for MIPS GNU/Linux отсюда: http://www.codesourcery.com Исходники я загружаю в /home/akhromov/Stuff Компилирую zlib. # Установил окружение $ export PATH=$HOME/CodeSourcery/Sourcery_G++_Lite/bin:$PATH $ export CFLAGS='-EL -march=74kc -fPIC' $ export CXXFLAGS='-EL -march=74kc -fPIC' cd ~/Stuff wget http://zlib.net/zlib-1.2.4.tar.gz tar xvzf zlib-1.2.4.tar.gz cd zlib-1.2.4 CC=mips-linux-gnu-gcc AR=mips-linux-gnu-ar RANLIB=mips-linux-gnu-ranlib ./configure --prefix=/home/akhromov/CodeSourcery/staging_dir make make install Затем компилирую libpng-1.4.1 $ cd ~/Stuff $ wget ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.4.1.tar.gz $ tar xvzf libpng-1.4.1.tar.gz $ cd libpng-1.4.1 $ export LDFLAGS="-L /home/akhromov/CodeSourcery/staging_dir/lib" $ export CPPFLAGS="-I /home/akhromov/CodeSourcery/staging_dir/include" $ ./configure --prefix=/home/akhromov/CodeSourcery/staging_dir --host=mips-linux-gnu $ make Вот здесь и начинаются первые проблемы: . . . . . . . . . /bin/sh ./libtool --tag=CC --mode=link mips-linux-gnu-gcc -EL -march=74kc -fPIC -no-undefined -export-dynamic -version-number 14:1:0 -Wl,--version-script=libpng.vers -L /home/akhromov/CodeSourcery/staging_dir/lib -o libpng14.la -rpath /home/akhromov/CodeSourcery/staging_dir/lib libpng14_la-png.lo libpng14_la-pngset.lo libpng14_la-pngget.lo libpng14_la-pngrutil.lo libpng14_la-pngtrans.lo libpng14_la-pngwutil.lo libpng14_la-pngread.lo libpng14_la-pngrio.lo libpng14_la-pngwio.lo libpng14_la-pngwrite.lo libpng14_la-pngrtran.lo libpng14_la-pngwtran.lo libpng14_la-pngmem.lo libpng14_la-pngerror.lo libpng14_la-pngpread.lo -lz -lm libtool: link: require no space between `-L' and `/home/akhromov/CodeSourcery/staging_dir/lib' make[1]: *** [libpng14.la] Error 1 Я вручную запустил libtool, убрав пробел после `-L` akhromov@x200s:~/Stuff/libpng-1.4.1$ /bin/sh ./libtool --tag=CC --mode=link mips-linux-gnu-gcc -EL -march=74kc -fPIC -no-undefined -export-dynamic -version-number 14:1:0 -Wl,--version-script=libpng.vers -L/home/akhromov/CodeSourcery/staging_dir/lib -o libpng14.la -rpath /home/akhromov/CodeSourcery/staging_dir/lib libpng14_la-png.lo libpng14_la-pngset.lo libpng14_la-pngget.lo libpng14_la-pngrutil.lo libpng14_la-pngtrans.lo libpng14_la-pngwutil.lo libpng14_la-pngread.lo libpng14_la-pngrio.lo libpng14_la-pngwio.lo libpng14_la-pngwrite.lo libpng14_la-pngrtran.lo libpng14_la-pngwtran.lo libpng14_la-pngmem.lo libpng14_la-pngerror.lo libpng14_la-pngpread.lo -lz -lm libtool: link: mips-linux-gnu-gcc -shared .libs/libpng14_la-png.o .libs/libpng14_la-pngset.o .libs/libpng14_la-pngget.o .libs/libpng14_la-pngrutil.o .libs/libpng14_la-pngtrans.o .libs/libpng14_la-pngwutil.o .libs/libpng14_la-pngread.o .libs/libpng14_la-pngrio.o .libs/libpng14_la-pngwio.o .libs/libpng14_la-pngwrite.o .libs/libpng14_la-pngrtran.o .libs/libpng14_la-pngwtran.o .libs/libpng14_la-pngmem.o .libs/libpng14_la-pngerror.o .libs/libpng14_la-pngpread.o -L/home/akhromov/CodeSourcery/staging_dir/lib -lz -lm -march=74kc -Wl,--version-script=libpng.vers -Wl,-soname -Wl,libpng14.so.14 -o .libs/libpng14.so.14.1.0 /home/akhromov/CodeSourcery/staging_dir/lib/libz.so: could not read symbols: File in wrong format collect2: ld returned 1 exit status Но получаю странную ошибку: /home/akhromov/CodeSourcery/staging_dir/lib/libz.so: could not read symbols: File in wrong format Файл libz.so ссылается правильно: akhromov@x200s:~$ ls -la /home/akhromov/CodeSourcery/staging_dir/lib total 320 drwxr-xr-x 3 akhromov akhromov 4096 2010-09-26 13:16 . drwxr-xr-x 5 akhromov akhromov 4096 2010-09-26 13:16 .. -rw-r--r-- 1 akhromov akhromov 166250 2010-09-26 13:16 libz.a lrwxrwxrwx 1 akhromov akhromov 13 2010-09-26 13:16 libz.so -> libz.so.1.2.4 lrwxrwxrwx 1 akhromov akhromov 13 2010-09-26 13:16 libz.so.1 -> libz.so.1.2.4 -rwxr-xr-x 1 akhromov akhromov 147068 2010-09-26 13:16 libz.so.1.2.4 drwxr-xr-x 2 akhromov akhromov 4096 2010-09-26 13:16 pkgconfig libz.so.1.2.4, имеет вроде, как правильный формат: akhromov@x200s:~/Stuff$ mips-linux-gnu-objdump -af ~/CodeSourcery/staging_dir/lib/libz.so.1.2.4 /home/akhromov/CodeSourcery/staging_dir/lib/libz.so.1.2.4: file format elf32-tradlittlemips /home/akhromov/CodeSourcery/staging_dir/lib/libz.so.1.2.4 architecture: mips:isa32r2, flags 0x00000150: HAS_SYMS, DYNAMIC, D_PAGED start address 0x000013c0 На сайте Sourcery кто-то постил такой же вопрос, но остался без ответа. В чем может быть проблема? С уважением, Алексей.