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

 
 
> Как задать нужный компилятор при компиляции исходников?
Dilim
сообщение Aug 28 2013, 13:24
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 28-08-13
Пользователь №: 78 089



Есть отладочная плата am3517evm на ядре cortex a8 и есть готовый SDK в котором собраны загрузчик, ядро и разные плюшки для запуска linux на данной плате. Для компиляции ядра и загрузчика написаны скрипты, которые используют кросс компилятор arm-arago-linux-gnueabi. Всё это делается под убунтой. Чтобы запустить на плате утилиту memtester, которая распространяется в виде исходников, нужно создать бинарник этой утилиты. После того, как я делаю make под убунтой полученный бинарник прекрасно запускается в ней же, но не хочет запускаться на плате. Как я понимаю нужно использовать компилятор из SDK, который бы собирал бинарник именно для платы. Что и как нужно прописать в makefile`е, чтобы make под убунтой использовала нужный компилятор?
Если можно, пожалуйста попдробней для нуба..
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
mdmitry
сообщение Aug 28 2013, 13:49
Сообщение #2


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Это Вы смотрели?

Два варианта:
1. кросс-тулчейн прописан в путях. Достаточно указать префикс в makefile или в командной строке для make.
2. кросс-тулчейн не прописан в путях. Необходимо указать полный путь к кросс-средствам при вызове make.
Названия соответствующих переменных (типа PATH_TO_CROSS_TOOLCHAIN) смотрите в makefile и файлах документации к собираемому пакету.
Возможно, в пакете есть для формирования корректного makefile скрипт ./configure.

Посмотрите документацию к ядру, его makefile. Там должна быть информация по сборке с помощью кросс-компилятора.

Я собирал ядро и программы для ARM9 по варианту 2 под Debian, программы для Cortex-M3 под win по 1.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
Dilim
сообщение Aug 30 2013, 14:36
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 28-08-13
Пользователь №: 78 089



Цитата(mdmitry @ Aug 28 2013, 17:49) *
Это Вы смотрели?


Смотрел, там пишут как добавить пусть к тулчейну и переопределить имя компилятора. Как только не пробовал но в итоге при выполнении make получается только это:

( cat warn-auto.sh; \
echo CC=\'`head -1 conf-cc`\'; \
echo LD=\'`head -1 conf-ld`\' \
) > auto-ccld.sh
/bin/sh: cat: команда не найдена
/bin/sh: строка 1: head: команда не найдена
/bin/sh: строка 2: head: команда не найдена
cat auto-ccld.sh make-compile.sh > make-compile
/bin/sh: cat: команда не найдена
make: *** [make-compile] Ошибка 127

В чём проблема? Он всё равно не может найти путь к компилятору? или я что то не так понимаю...

Go to the top of the page
 
+Quote Post
mdmitry
сообщение Aug 30 2013, 16:51
Сообщение #4


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Приведите, пожалуйста, содержание makefile, а также список всех команд со всемт ключами, которые Вы выполняли.
Если вы не имеете опыта работы с linux, то придется изучить команды и приемы работы. Без этого поднять linux на платформе будет очень тяжело.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
psL
сообщение Aug 31 2013, 06:42
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390



там параметры тулчейна задаются через файлы conf-cc conf-ld, смотрите README.
Видимо в этих файлах нужно задать arm-arago-linux-gnueabi-gcc вместо сс
Go to the top of the page
 
+Quote Post
Dilim
сообщение Aug 31 2013, 07:30
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 28-08-13
Пользователь №: 78 089



вовсю изучаю, да больно мудрёно) вот makefile без изменений:

CODE
CC = $(shell head -n 1 conf-cc)
LD = $(shell head -n 1 conf-ld)

SOURCES = memtester.c tests.c
OBJECTS = $(SOURCES:.c=.o)
HEADERS = memtester.h
TARGETS = *.o compile load auto-ccld.sh find-systype make-compile make-load systype extra-libs
INSTALLPATH = /usr/local

#
# Targets
#
all: memtester

install: all
mkdir -m 755 -p $(INSTALLPATH)/{bin,man/man8}
install -m 755 memtester $(INSTALLPATH)/bin/
gzip -c memtester.8 >memtester.8.gz; install -m 644 memtester.8.gz $(INSTALLPATH)/man/man8/

auto-ccld.sh: \
conf-cc conf-ld warn-auto.sh
( cat warn-auto.sh; \
echo CC=\'`head -1 conf-cc`\'; \
echo LD=\'`head -1 conf-ld`\' \
) > auto-ccld.sh

compile: \
make-compile warn-auto.sh systype
( cat warn-auto.sh; ./make-compile "`cat systype`" ) > \
compile
chmod 755 compile

find-systype: \
find-systype.sh auto-ccld.sh
cat auto-ccld.sh find-systype.sh > find-systype
chmod 755 find-systype

make-compile: \
make-compile.sh auto-ccld.sh
cat auto-ccld.sh make-compile.sh > make-compile
chmod 755 make-compile

make-load: \
make-load.sh auto-ccld.sh
cat auto-ccld.sh make-load.sh > make-load
chmod 755 make-load

systype: \
find-systype trycpp.c
./find-systype > systype

extra-libs: \
extra-libs.sh systype
./extra-libs.sh "`cat systype`" >extra-libs

load: \
make-load warn-auto.sh systype
( cat warn-auto.sh; ./make-load "`cat systype`" ) > load
chmod 755 load

clean:
rm -f memtester $(TARGETS) $(OBJECTS) core

memtester: \
$(OBJECTS) memtester.c tests.h tests.c tests.h conf-cc Makefile load extra-libs
./load memtester tests.o `cat extra-libs`

memtester.o: memtester.c tests.h conf-cc Makefile compile
./compile memtester.c

tests.o: tests.c tests.h conf-cc Makefile compile
./compile tests.c


в файле conf-cc по умолчанию вот эта строка:

Код
cc -O2 -DPOSIX -D_POSIX_C_SOURCE=200809L -D_FILE_OFFSET_BITS=64 -DTEST_NARROW_WRITES -c


это, как я понимаю, указание компилятора и параметры его вызова. я пытался менять на arm-arago-linux-gnueabi-gcc, то есть на тот, который мне нужен и указывать пусть до него в основном makefile с помощью:

Код
export PATH="/home/ti-sdk/linux-devkit/sysroots/i686-arago-linux/usr/bin:$PATH"


после чего из консоли за пускал make memtester, но как то не сложилось( что я делаю не так?

Цитата(psL @ Aug 31 2013, 10:42) *
там параметры тулчейна задаются через файлы conf-cc conf-ld, смотрите README.
Видимо в этих файлах нужно задать arm-arago-linux-gnueabi-gcc вместо сс


да, я не настолько нуб, чтобы не прочитать readme) я делал так, но в результате ошибки..

Сообщение отредактировал IgorKossak - Aug 31 2013, 09:54
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
Dilim
сообщение Aug 31 2013, 08:51
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 28-08-13
Пользователь №: 78 089



кажется заработало! там надо было запустить некий скрипт окружения и уже с ним компилировать..
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th June 2025 - 22:36
Рейтинг@Mail.ru


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