LINUX.ORG.RU

Кросс-компиляция для arm


0

0

Решил собрать кваку (ezquake) под мой n810. Сsvnил ее и начал.
1. Меняю в Makefile платформу на armv6l.
2. Собираю ARCH=«armv6l» make x11 svga.
3. Получаю ошибку:
[LINK] release-armv6l/ezquake.x11
gcc: libs/linux-armv6l/minizip.a: Нет такого файла или каталога
gcc: libs/linux-armv6l/libpng.a: Нет такого файла или каталога
gcc: libs/linux-armv6l/libz.a: Нет такого файла или каталога
gcc: libs/linux-armv6l/libpcre.a: Нет такого файла или каталога
gcc: libs/linux-armv6l/libexpat.a: Нет такого файла или каталога
gcc: libs/linux-armv6l/libtcl.a: Нет такого файла или каталога
gcc: libs/linux-armv6l/libircclient.a: Нет такого файла или каталога
make: *** [release-armv6l/ezquake.x11] Ошибка 1

Очень озадачен. Где найти эти библиотеки под указанную платформу?
Или *.a - это ассемблер и все гораздо сложнее?


.a это статические библиотеки ( в отличие от .so - динамических)

можете и сами собрать,
zlib png expat tcl - стандартные

Sylvia ★★★★★
()

>Очень озадачен. Где найти эти библиотеки под указанную платформу?

Собрать? или нагуглить готовые сборки.

Или *.a - это ассемблер и все гораздо сложнее?

Это статическая библиотека - ar-архив объектных файлов (.o)

Sectoid ★★★★★
()
Ответ на: комментарий от Sylvia

ARCH=«armv6l» ./configure
ARCH=«armv6l» make

gcc -O3 -DUSE_MMAP -c -o example.o example.c
gcc -O3 -DUSE_MMAP -c -o adler32.o adler32.c
gcc -O3 -DUSE_MMAP -c -o compress.o compress.c
gcc -O3 -DUSE_MMAP -c -o crc32.o crc32.c
gcc -O3 -DUSE_MMAP -c -o gzio.o gzio.c
gcc -O3 -DUSE_MMAP -c -o uncompr.o uncompr.c
gcc -O3 -DUSE_MMAP -c -o deflate.o deflate.c
gcc -O3 -DUSE_MMAP -c -o trees.o trees.c
gcc -O3 -DUSE_MMAP -c -o zutil.o zutil.c
gcc -O3 -DUSE_MMAP -c -o inflate.o inflate.c
gcc -O3 -DUSE_MMAP -c -o infback.o infback.c
gcc -O3 -DUSE_MMAP -c -o inftrees.o inftrees.c
gcc -O3 -DUSE_MMAP -c -o inffast.o inffast.c
ar rc libz.a adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o zutil.o inflate.o infback.o inftrees.o inffast.o
gcc -O3 -DUSE_MMAP -o example example.o -L. libz.a
gcc -O3 -DUSE_MMAP -c -o minigzip.o minigzip.c
gcc -O3 -DUSE_MMAP -o minigzip minigzip.o -L. libz.a


все верно?

wasd
() автор топика

> Очень озадачен. Где найти эти библиотеки под указанную платформу?

нужны все зависимости, начиная от самых libc, собранные под целевую платформу. Именно за это любят кросскомпиляцию. Ты, кстати, можешь практически собрать LFS :-)

name_no ★★
()
Ответ на: комментарий от name_no

На целевой платформе есть libc, ну а зависимости я соберу :)
З.Ы.: не-не, спасибо, мне генты хватит :)

wasd
() автор топика
Ответ на: комментарий от wasd

> На целевой платформе есть libc

на той, где компилируешь тоже должна быть, иначе линковщик расскажет про undefined symbol или про что он там рассказывает обычно в таких случаях.

З.Ы.: не-не, спасибо, мне генты хватит :)

кстати, хороший вариант - из stage3 под целевую платформу натаскать либ.

name_no ★★
()

а что за minizip.a? гугл молчит, словно партизан.

wasd
() автор топика
Ответ на: комментарий от name_no

в принципе, можно было бы, даже стэйж уже давно есть. Но зачем весь гемор с вытаскиванием оттуда и размещением в системе либ, если можно сделать apt-get install на целевой системе? :)

wasd
() автор топика
Ответ на: комментарий от anonymous

здравствуй, К. О.! лучше раскажи где сорцы найти, в портажах их тоже нет.

wasd
() автор топика

Я собирал под ARM при помощи кросскомпилятора, который был собран системой сборки OpenEmbedded...

Еще как вариант Dedian ARM под QEMU - вот тебе и все зависимости и библиотеки... Однако, стоит помнить то, что надо сначала выяснить какие библиотеки на твоем ARM, какой ABI, какая системная библиотека и т.п.

Но мне помнится что n810 - оригинальное от нокии построено на Debian.

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

из библиотек - libc6 и некий osso (никогда ранее о нем не слышал). Могу предоставить версии библиотек, если надо. То, что он на дебиане - это да, но многие системные библиотеки обновлять нельзя, ибо это приводит к неработоспособности системы. Пробовал генту (чрутом) - долго это. Можно вроде подключить репозиторий дебиана, но не думаю что программы в нем пойдут (библиотеки конфликтовать будут вроде).
Кстати, можно поставить убунту, например. Чрутом работает довольно быстро, разница в скорости незначительна. Из минусов - много весит, зато много пакетов и нормальная возможность пособирать. Я как-то больше люблю собирать, поэтому лучше допилю генту. Кстати, armv6l и armv6j - вроде как разные, но совместимы. Качал стейж для armv6j, вроде работает, где могут ждать костыли?

wasd
() автор топика

А не проще взять официальный SDK и засунуть в qemu (там даже образ готовый уже есть, вроде)?

kemm
()
Ответ на: комментарий от wasd

Минимум половина появится (я не помню точно, что там есть — отдал таблетку жене).

Ну и привёл бы строчку, которой линковка выполняется — мало ле, вдру там этот mimizip должен собраться вместе с ezquak и проблема вообще в другой стороне.

kemm
()
Ответ на: комментарий от kemm

[sbox-DIABLO_ARMEL: ~/zlib-1.2.3/contrib/minizip] > ls -1
ChangeLogUnzip
Makefile
crypt.h
ioapi.c
ioapi.h
ioapi.o
iowin32.c
iowin32.h
miniunz
miniunz.c
miniunz.o
minizip
minizip.c
minizip.o
mztools.c
mztools.h
unzip.c
unzip.h
unzip.o
zip.c
zip.h
zip.o

как создать minizip.a?

wasd
() автор топика
Ответ на: комментарий от wasd
ar rc minizip.a zip.o unzip.o ioapi.o

попробуй, чтоли... Мне лень ezquake выкачивать и смотреть, если честно. А чем квака из репозитария не устроила, кстати?

kemm
()
Ответ на: комментарий от kemm

Тем, что в репозитории квака «старого образца». Не поддерживает много новых полезностей - формат демок qwd, телевидение qtv и т. д. да и настроек тут в разы больше. Кстати, видимо, в maemo инклуды и сорцы ядра кривые.
http://pastebin.ru/309779

wasd
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.