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

 
 
 
Reply to this topicStart new topic
> Проблемы при компиляции uCLinux для STR710
Ivan_Kov
сообщение Nov 11 2006, 11:59
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 174
Регистрация: 30-10-06
Из: г. Курск
Пользователь №: 21 787



На своем компьютере, я использую ОС debian gnu/linux.
При компиляции uClinux для STR710 возникли 2 проблемы:

Проблема 1.
компилирую в соответствии с указаниями an-2119.pdf: ядро 2.4, uClibc, все настройки – по умолчению. На шаге компиляции «make user_only» возникает ошибка:

gcc -I/usr/include -c -o build/compr_rtime.o compr_rtime.c
compr_rtime.c:31: error: syntax error before "uint32_t"
compr_rtime.c: In function `jffs2_rtime_compress':
compr_rtime.c:39: error: `sourcelen' undeclared (first use in this function)
compr_rtime.c:39: error: (Each undeclared identifier is reported only once
compr_rtime.c:39: error: for each function it appears in.)
compr_rtime.c:39: error: `dstlen' undeclared (first use in this function)
compr_rtime.c:43: error: `data_in' undeclared (first use in this function)
compr_rtime.c:45: error: `cpage_out' undeclared (first use in this function)
compr_rtime.c: At top level:
compr_rtime.c:71: error: syntax error before "uint32_t"
compr_rtime.c: In function `jffs2_rtime_decompress':
compr_rtime.c:79: error: `destlen' undeclared (first use in this function)
compr_rtime.c:84: error: `data_in' undeclared (first use in this function)
compr_rtime.c:85: error: `cpage_out' undeclared (first use in this function)
make[2]: *** [build/compr_rtime.o] ошибка 1
make[2]: Leaving directory `/home/ivan/ucLinux/uClinux-dist/user/mtd-utils'
make[1]: *** [all] ошибка 2
make[1]: Leaving directory `/home/ivan/ucLinux/uClinux-dist/user'
make: *** [user_only] ошибка 2

В принципе, удалось от нее избавиться, заменив uint32_t на __u32. Но правильный ли это путь?

Проблема 2.
Если, при конфигурировании, в ядро добавить gdbserver, то возникает ошибка (make user_only):

arm-elf-gcc -c -O2 -g -fomit-frame-pointer -Dlinux -D__linux__ -Dunix -D__uClinux__ -DEMBED -I/home/ivan/ucLinux/uClinux-dist/lib/uClibc/include -I/home/ivan/ucLinux/uClinux-dist/lib/libm -I/home/ivan/ucLinux/uClinux-dist/lib/libcrypt_old -I/home/ivan/ucLinux/uClinux-dist -fno-builtin -nostartfiles -I/home/ivan/ucLinux/uClinux-dist/linux-2.4.x/include -Ibfd -I./bfd -Igdb -Iinclude -Iconfig -I. gdbreplay.c
cc1: warning: -g with -fomit-frame-pointer may not give sensible debugging
gdbreplay.c: In function `perror_with_name':
gdbreplay.c:58: `sys_nerr' undeclared (first use in this function)
gdbreplay.c:58: (Each undeclared identifier is reported only once
gdbreplay.c:58: for each function it appears in.)
gdbreplay.c:58: `sys_errlist' undeclared (first use in this function)
make[2]: *** [gdbreplay.o] ошибка 1
make[2]: Leaving directory `/home/ivan/ucLinux/uClinux-dist/user/gdbserver'
make[1]: *** [all] ошибка 2
make[1]: Leaving directory `/home/ivan/ucLinux/uClinux-dist/user'
make: *** [user_only] ошибка 2

Подскажите, пожалуйста, как устранить эту проблему.
Go to the top of the page
 
+Quote Post
Ivan_Kov
сообщение Nov 13 2006, 07:40
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 174
Регистрация: 30-10-06
Из: г. Курск
Пользователь №: 21 787



Не молчите, товарищи, скажите хоть что-нибудь. Неужели ни у кого больше не было такой ошибки? Может, у меня кривая версия закачена?
Go to the top of the page
 
+Quote Post
Ivan_Kov
сообщение Nov 15 2006, 08:00
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 174
Регистрация: 30-10-06
Из: г. Курск
Пользователь №: 21 787



Проблему удалось решить. Хотя, думаю, не лучшим образом, но все компилируется и вроде как работает.
Я заменил строку 58:
err = (errno < sys_nerr) ? sys_errlist[errno] : "unknown error";
на
char temp[256];
sprintf (temp, "%d", errno);
err=temp;
т.е. вместо строки об ошибке я вывожу ее код.
Таким образом я избавился от использования не объявленных переменных sys_ner и sys_errlist. Но почему эти переменные оказались не объявленными – не ясно.

Может быть, кто-то поделится своими мыслями по этому поводу?
Go to the top of the page
 
+Quote Post
KirillS
сообщение Nov 16 2006, 05:31
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 44
Регистрация: 10-10-06
Пользователь №: 21 161



Цитата(Ivan_Kov @ Nov 15 2006, 10:00) *
Проблему удалось решить. Хотя, думаю, не лучшим образом, но все компилируется и вроде как работает.
Я заменил строку 58:
err = (errno < sys_nerr) ? sys_errlist[errno] : "unknown error";
на
char temp[256];
sprintf (temp, "%d", errno);
err=temp;
т.е. вместо строки об ошибке я вывожу ее код.
Таким образом я избавился от использования не объявленных переменных sys_ner и sys_errlist. Но почему эти переменные оказались не объявленными – не ясно.

Может быть, кто-то поделится своими мыслями по этому поводу?


Ну, я работаю с дистрибуцией uClinux для MicroBlaze. Подобные проблемы встречаются сплошь да рядом. Средства устранения: искать patch или править самому. Welcome to Linux...


--------------------
Some days you eat the bear. Some days the bear eats you.
Go to the top of the page
 
+Quote Post
Ivan_Kov
сообщение Nov 16 2006, 09:12
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 174
Регистрация: 30-10-06
Из: г. Курск
Пользователь №: 21 787



спасибо, в линуксе я - новичек,
но уже начал догадоваться что так оно есть smile.gif ...
Go to the top of the page
 
+Quote Post

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

 


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


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