Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:0
Поисковых ботовПоисковых ботов:2
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:3
Форум » starterkit.ru » Embedded Linux
вопрос новичка про компиляцию
Jury093
Добавлено 09.06.2010 09:12 Редактировалось 09.06.2010 09:12 Сообщение: 11
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
у вас похоже не прописан путь к кросскомпиллеру
попробуйте из консоли (не из MC) дать команду

Код
export PATH=/usr/local/arm_linux_4.2/bin:$PATH

после этого в консоли наберите arm и два раза нажмите TAB должен вылететь список примерно такой:

Код
debian:~# arm
arm2hpdl arm-linux-strings
arm-linux-addr2line arm-linux-strip
arm-linux-ar arm-none-linux-gnueabi-addr2line
arm-linux-as arm-none-linux-gnueabi-ar
arm-linux-c++ arm-none-linux-gnueabi-as
arm-linux-c++filt arm-none-linux-gnueabi-c++
arm-linux-cpp arm-none-linux-gnueabi-c++filt
arm-linux-g++ arm-none-linux-gnueabi-cpp
arm-linux-gcc arm-none-linux-gnueabi-g++
arm-linux-gcc-4.2.1 arm-none-linux-gnueabi-gcc
arm-linux-gccbug arm-none-linux-gnueabi-gcc-4.2.1
arm-linux-gcov arm-none-linux-gnueabi-gccbug
arm-linux-gdb arm-none-linux-gnueabi-gcov
arm-linux-gdbtui arm-none-linux-gnueabi-ld
arm-linux-ld arm-none-linux-gnueabi-nm
arm-linux-nm arm-none-linux-gnueabi-objcopy
arm-linux-objcopy arm-none-linux-gnueabi-objdump
arm-linux-objdump arm-none-linux-gnueabi-ranlib
arm-linux-pkg-config arm-none-linux-gnueabi-readelf
arm-linux-ranlib arm-none-linux-gnueabi-size
arm-linux-readelf arm-none-linux-gnueabi-strings
arm-linux-run arm-none-linux-gnueabi-strip
arm-linux-size
debian:~# arm

если это не произошло, то выложите что показывает команда

Код
ls /usr/local/arm_linux_4.2/bin

и

Код
ls /usr/local/arm_linux_4.2

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
automater
Добавлено 09.06.2010 11:51 Сообщение: 12
automater
0

Регистрация: 07.06.2010
После
Код
export PATH=/usr/local/arm_linux_4.2/bin:$PATH
все стало компилироваться и список этот показал после arm и двух Tab.
Спасибо за помощь! Все заработало!
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 09.06.2010 12:18 Сообщение: 13
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Спасибо за помощь! Все заработало!

ну и отлично.
не забудьте вписать эту строку куда-нить в файл настройки шелла для нужного юзера, чтобы после перезагрузки не вводить это еще раз :)
например для bash имеет смысл дописать в .bashrc

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Lavin
Добавлено 18.07.2010 22:43 Редактировалось 18.07.2010 23:00 Сообщение: 14
Lavin
2.4

Пункты: 1267
Регистрация: 22.05.2009
Пол: Мужчина
Из: Москва
Спрошу так как просидел весь день.Хочу скомпилировать свою программу.За основу взял пример с gpio из wiki.Все хорошо да потребоваляся мне модуль delay.h.Прикрутил-компилятор в ответ
testgpio1.c:4:25: error: linux/delay.h: No such file or directory
Все бы ничего но самое странное следующие
debian:/home/dima/gpio# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/src/linux-headers-2.6.26-1-common/include
locate delay.h
/usr/src/linux-headers-2.6.26-1-common/include/asm-arm/delay.h
/usr/src/linux-headers-2.6.26-1-common/include/linux/delay.h
/usr/src/linux-headers-2.6.26-2-common/include/asm-arm/delay.h
/usr/src/linux-headers-2.6.26-2-common/include/linux/delay.h
Мэйкфайл:
# targets
all: testgpio1

CC = gcc
AR = ar

#CC = arm-angstrom-linux-gnueabi-gcc
#AR = arm-angstrom-linux-gnueabi-ar

INCLUDES = -I.

# C++ compiler flags (-g -O2 -Wll)
CCFLAGS = -g0 -O2 -Wall

libat91gpio.a: at91gpio.c
$(CC) $(INCLUDES) $(CCFLAGS) -c at91gpio.c -o at91gpio.o
$(AR) rcs libat91gpio.a at91gpio.o

clean:
rm -f libat91gpio.a *.o *~ *.a testgpio1 testgpio2

testgpio1: testgpio1.c libat91gpio.a
$(CC) $(INCLUDES) $(CCFLAGS) testgpio1.c -o testgpio1 -L. -lat91gpio


Кажется разобался.Добавил в $(INCLUDES) путь.теперь другая загвоздка
debian:/home/dima/gpio# make
gcc -I. -I/usr/src/linux-headers-2.6.26-1-common/include/ -g0 -O2 -Wall -c at91gpio.c -o at91gpio.o
ar rcs libat91gpio.a at91gpio.o
gcc -I. -I/usr/src/linux-headers-2.6.26-1-common/include/ -g0 -O2 -Wall testgpio1.c -o testgpio1 -L. -lat91gpio
In file included from testgpio1.c:4:
/usr/src/linux-headers-2.6.26-1-common/include/linux/delay.h: In function ‘ndelay’:
/usr/src/linux-headers-2.6.26-1-common/include/linux/delay.h:39: warning: implicit declaration of function ‘DIV_ROUND_UP’
/tmp/ccICh3pk.o: In function `Out_data':
testgpio1.c:(.text+0x258): undefined reference to `__const_udelay'
collect2: ld returned 1 exit status
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 18.07.2010 23:13 Редактировалось 18.07.2010 23:30 Сообщение: 15
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
я не силен в таких вопросах.. могу только предположить:
из-за отсутствующей декларации
Код
/usr/src/linux-headers-2.6.26-1-common/include/linux/delay.h: In function ‘ndelay’:
/usr/src/linux-headers-2.6.26-1-common/include/linux/delay.h:39: warning: implicit declaration of function ‘DIV_ROUND_UP’


компилятору не удалось вычислить адрес:
Код
testgpio1.c:(.text+0x258): undefined reference to `__const_udelay'


ищите где упоминается функция DIV_ROUND_UP

update кстати вполне возможно что хидеры "не те" и эта функция специфична, например, для x86 платформы..
а если поискать в хидерах компилятора?

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Lavin
Добавлено 18.07.2010 23:46 Сообщение: 16
Lavin
2.4

Пункты: 1267
Регистрация: 22.05.2009
Пол: Мужчина
Из: Москва
Так это хидеры полученные apt-get ом на плате.да и там явно указана что это для арма..Я помню год назад у меня это все компилилось только я rootfs посеял эту.Вот теперь ломаю голову.А вообще udelay используется для маленьких промежутков времени и управление другим процессам не дает.Значит можно сделать тупо циклом nop"ми например..
Или я ошибаюсь?
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 19.07.2010 00:16 Сообщение: 17
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
я иногда для задержек колхозю типа
for(i=0;i<1000000;i++) {}
вполне хватает для отработки алгоритма

еще вариант может быть, что компилятор не знает такой функции..
вот посоветовал гугль где прописана эта функция..
чисто выдрано из треда для примера:

Код
#include <linux/kernel.h>
@depends on haskernel@
expression n,d;
@@
(
- (n + d - 1) / d
+ DIV_ROUND_UP(n,d)
|
- (n + (d - 1)) / d
+ DIV_ROUND_UP(n,d)
)

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux