реклама на сайте
подробности

 
 
> Sourcery G++ MIPS. Ошибка сборки библиотеки libpng
AxaRu
сообщение Sep 26 2010, 20:05
Сообщение #1





Группа: Новичок
Сообщений: 9
Регистрация: 26-09-10
Из: в Москве
Пользователь №: 59 753



Здравствуйте.

Прошу помочь мне с решением следующей проблемы.

Я хочу откомпилирвать 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 кто-то постил такой же вопрос, но остался без ответа.

В чем может быть проблема?

С уважением, Алексей.


Сообщение отредактировал AxaRu - Sep 26 2010, 20:06
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AxaRu
сообщение Sep 27 2010, 07:32
Сообщение #2





Группа: Новичок
Сообщений: 9
Регистрация: 26-09-10
Из: в Москве
Пользователь №: 59 753



Спасибо за помощь

Ок. Убрал экспорты '-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") программа не захотела запускаться.

Сообщение отредактировал AxaRu - Sep 27 2010, 07:33
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th July 2025 - 17:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01403 секунд с 7
ELECTRONIX ©2004-2016