Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ARM-Кросскомпиляция.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
jacuba
Добрый день,
и так, "Кросскомпиляция", я хочу окончательно разобраться с этим вопросом.

Предположим, что у меня есть некая машина с ARM-архитектурой и есть основная машина с i386 архитектурой. Мне хочется собрать некоторую программу на машине с i386 для машины с ARM.

для этого я собираю и устанавливаю arm-компилятор.
затем я беру исходник программы hello.c:
Код
#include <stdio.h>

int main(){
        printf("Hello world!");
        return 0;
}

и в командной строке пишу:
Код
~ # arm-linux-gcc hello.c -o hello

На выходе я получаю файл hello, его я кидаю на машину с ARM, запускаю и вижу надпись "Hello world!". Из этого делаю вывод, что кросскомпилятор у меня работает нормально.

Теперь, я хочу скомпилировать уже не просто программу, где на выходе будет один бинарник, а хочу скомпилировать программу побольше, где есть еще разные сторонние файлы. Для этого захожу в папку:
Код
~ # ls -1
build_tools
ChangeLog
dahdi-linux-2.4.1.2-summary.html
dahdi-linux-2.4.1.2-summary.txt
doc
drivers
include
LICENSE
LICENSE.LGPL
Makefile
README
UPGRADE.txt


Как мне скомпилировать эту программу, ведь здесь нет фала "<name>.c". Прошу разъяснить, уважаемые.

Спасибо и с уважением.
Дмитрий.
klen
в списке файлов имеется Makefile - это особый файл который содержит информацию ЧТО и КАК ДЕЛАТЬ с ПРОЕКТОМ (ну например собрать бинарь, и и любое другое действие) под управлением утилиты GNU make. в этом файле, оформленом по определенным правилам описаны цепочки действий, в нем ВЫ можете указать все что надо делать. Если он уже есть то скорее всего кто то кто этот проект сделал туда все уже написал, Вам нада в него залесть и изучить.

первое что Вы можете сделать это из дериктории проекта где лежит Makefile вызвать утилиту make, она автоматом его считает и выполнит первую цель указанную в этом файле (обычно это сборка проекта)

нулевое и наиважнейшее - изучите неоткладывая документацию на GNU make
http://www.gnu.org/software/make/manual/make.html
если не знаете английски то можно тут http://www.opennet.ru/docs/RUS/make_compile
но лучше всетаки оригинал читать - то кто переводит иногда сам не в курсе про что речь.
_Pasha
Цитата(klen @ May 19 2011, 09:04) *
нулевое и наиважнейшее - изучите неоткладывая документацию на GNU make

тут - под вынь генератор мэйков с кнопочками sm.gif
Я понимаю, что фу итд, но тоже помощь - почитать что почем сгенерилось.
mdmitry
Цитата(jacuba @ May 19 2011, 09:22) *
Код
~ # ls -1
build_tools
ChangeLog
dahdi-linux-2.4.1.2-summary.html
dahdi-linux-2.4.1.2-summary.txt
doc
drivers
include
LICENSE
LICENSE.LGPL
Makefile
README
UPGRADE.txt


У Вас уже есть Makefile в каталоге и Readme! Если в Makefile указано все правильно для работы с кросс-средствами (пути, имена программ и т.д.), то все просто:
Код
make

make считает Makefile и выполнит необходимые действия (в большинстве случаев).
А совет от klen очень нужный для будущей работы, стоит им воспользоваться.
RISCovyj
Можете прислать сам Makefile?
mdmitry
Цитата(RISCovyj @ May 24 2011, 18:13) *
Можете прислать сам Makefile?

А какой? У меня их много rolleyes.gif
Если серьезно, то вопрос не корректный. Что собирать собрались, какой компилятор и т.д.?
RISCovyj
Цитата(mdmitry @ May 24 2011, 17:36) *
А какой? У меня их много rolleyes.gif
Если серьезно, то вопрос не корректный. Что собирать собрались, какой компилятор и т.д.?


Я имел ввиду Makefile автора этой темы :-)
mdmitry
Цитата(RISCovyj @ May 27 2011, 17:37) *
Я имел ввиду Makefile автора этой темы :-)

Он, судя по файлам, хотел собрать что-то отсюда. В архивах должны быть соответствующие файлы.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.