2016-01-15 1 views
0

Я хочу перекрестно скомпилировать приложение с моей рабочей станции (x86, linux) для процессора приложений ARM. Сначала я строю для своей системы:Приложение Cross Compile ncurses для ARM linux

gcc -static -g -Wall -c main.c -o main.o 
gcc -g -Wall main.o -o myApplication -lncurses 

этот сборка как я хочу, а также работаю. Если я хочу построить это для рычага

arm-linux-gnueabi-gcc -static -g -Wall -c main.c -o main.o 
arm-linux-gnueabi-gcc -g -Wall main.o -o myApplication -lncurses 

Но это не скомпилируется.

/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/bin/ld: cannot find -lncurses 
collect2: Error 

Итак: как скомпилировать ncurses Приложение таким образом?

+0

Где находится ваша ARM-версия библиотеки ncurses? Если вы не пытались помещать его где-то, покрываемое поисковым путем по умолчанию для сшивающего агента, вам нужно указать, где его найти. Один в/usr/lib/... заполнен кодом x86. – Notlikethat

+0

Я ищу его во всех своих каталогах, но не могу его найти. Должен ли я строить ncurses для руки на себе или есть какой-либо пакет или ppa для этого (ppa)? – alabamajack

+0

Действительно, лучше всего сделать кросс-компиляцию, чтобы монтировать файловую систему целевого устройства на главной машине (или просто сохранить ее копию там) и построить против нее с помощью --sysroot =. В конце концов, если _that_ не имеет правильных библиотек, то ваша динамически связанная программа не будет запускаться там в любом случае. – Notlikethat

ответ

0

Один простой способ сделать это - загрузить двоичный выпуск ELLCC. Он поставляется с предварительно построенными библиотеками, включая ncurses. Страница загрузки: here. Если вы захватите, например, http://ellcc.org/releases/ellcc-x86_64-linux-eng-0.1.27.tgz (Номер версии будет меняться со временем), вы можете его разблокировать. Для ARM, ваши сборки линия будет выглядеть следующим образом:

~/ellcc/bin/ecc -target arm-linux-engeabihf -g -Wall -c main.c -o main.o 
~/ellcc/bin/ecc -target arm-linux-engeabihf -g -Wall main.o -o myApplication -lncurses 

Это создает статическую бинарное, так что вам не придется беспокоиться об общих версиях библиотеки.