Пакет кросс-компиляции lftp-4.3.5 для платы на базе ARM

Я пытаюсь перекрестно скомпилировать lftp-4.3.5 для своей платы на основе руки. Я выполнил файл конфигурации как:

"./configure --host=arm-montavista-linux CXX=arm-montavista-linux-gnueabi-g++ CC=arm-montavista-linux-gnueabi-gcc --with-openssl=/abcd/xxx/yyy/ssl with_included_readline =нет"

Пришлось немного изменить файл конфигурации. Я добавил "i_cv_posix_fallocate_works=yes", потому что я получал такие ошибки, как

checking for pty.h... yes
checking for library containing openpty... -lutil
checking for _getpty... configure: error: in `/home/xxxx/yyyy/lftp-4.3.5':
checking whether posix_fallocate() works... no
configure: error: cannot run test program while cross compiling
See `config.log' for more details

Я не мог найти решение для этого, поэтому я модифицировал его таким образом и избавился от этой блокировки.

Теперь он просил библиотеку readline, я скачал исходный код lib (readline-6.2) и перекрестно скомпилировал его. при запуске файла make скрипт make не брал кросс-компилированный файл libreadline.a из заданного места (я добавил путь --libdir при запуске configure). Во всяком случае, я смог предоставить эту библиотеку для создания скрипта, но когда скрипт прочитал эту библиотеку, он выдал много ошибок, например:

/bin/sh ../libtool --silent --tag=CXX   --mode=link arm-montavista-linux-gnueabi-g++  -O2 -Wall -Wwrite-strings -Woverloaded-virtual -fno-exceptions -fno-rtti -fno-implement-inlines  -s -o lftp lftp.o complete.o lftp_rl.o attach.o liblftp-jobs.la -lreadline -lutil -ldl 
/home/dev/montavista/tools/arm-gnueabi/bin/../lib/gcc/arm-montavista-linux-gnueabi/4.4.1/../../../../arm-montavista-linux-gnueabi/bin/ld: warning: library search path "/usr/local/lib/lftp/4.3.7" is unsafe for cross-compilation
/usr/local/lib/lftp/4.3.7/libreadline.a(display.o): In function `cr':
/home/dev/workspace/readline-6.2/display.c:2465: undefined reference to `tputs'
/usr/local/lib/lftp/4.3.7/libreadline.a(display.o): In function `_rl_clear_screen':
/home/dev/workspace/readline-6.2/display.c:2345: undefined reference to `tputs'
/usr/local/lib/lftp/4.3.7/libreadline.a(display.o): In function `_rl_clear_to_eol':
/home/dev/workspace/readline-6.2/display.c:2322: undefined reference to `tputs'
/usr/local/lib/lftp/4.3.7/libreadline.a(display.o): In function `_rl_move_vert':
/home/dev/workspace/readline-6.2/display.c:2053: undefined reference to `tputs'
/home/dev/workspace/readline-6.2/display.c:2061: undefined reference to `tputs'
/usr/local/lib/lftp/4.3.7/libreadline.a(display.o):/home/dev/workspace/readline-6.2/display.c:1981: more undefined references to `tputs' follow
/usr/local/lib/lftp/4.3.7/libreadline.a(display.o): In function `insert_some_chars':
/home/dev/workspace/readline-6.2/display.c:2369: undefined reference to `tgoto'
/home/dev/workspace/readline-6.2/display.c:2370: undefined reference to `tputs'
/home/dev/workspace/readline-6.2/display.c:2379: undefined reference to `tputs'
/home/dev/workspace/readline-6.2/display.c:2386: undefined reference to `tputs'
/home/dev/workspace/readline-6.2/display.c:2395: undefined reference to `tputs'
/usr/local/lib/lftp/4.3.7/libreadline.a(display.o): In function `delete_chars':
/home/dev/workspace/readline-6.2/display.c:2412: undefined reference to `tgoto'
/home/dev/workspace/readline-6.2/display.c:2413: undefined reference to `tputs'
/home/dev/workspace/readline-6.2/display.c:2419: undefined reference to `tputs'
/usr/local/lib/lftp/4.3.7/libreadline.a(display.o): In function `rl_redisplay':
/home/dev/workspace/readline-6.2/display.c:1083: undefined reference to `tputs'
/usr/local/lib/lftp/4.3.7/libreadline.a(terminal.o): In function `_rl_set_cursor':
/home/dev/workspace/readline-6.2/terminal.c:728: undefined reference to `tputs'
/usr/local/lib/lftp/4.3.7/libreadline.a(terminal.o): In function `_rl_control_keypad':
/home/dev/workspace/readline-6.2/terminal.c:701: undefined reference to `tputs'
/usr/local/lib/lftp/4.3.7/libreadline.a(terminal.o):/home/dev/workspace/readline-6.2/terminal.c:703: more undefined references to `tputs' follow
/usr/local/lib/lftp/4.3.7/libreadline.a(terminal.o): In function `_rl_get_screen_size':
/home/dev/workspace/readline-6.2/terminal.c:269: undefined reference to `tgetnum'
/home/dev/workspace/readline-6.2/terminal.c:285: undefined reference to `tgetnum'
/usr/local/lib/lftp/4.3.7/libreadline.a(terminal.o): In function `_rl_init_terminal_io':
/home/dev/workspace/readline-6.2/terminal.c:452: undefined reference to `tgetent'
/usr/local/lib/lftp/4.3.7/libreadline.a(terminal.o): In function `get_term_capabilities':
/home/dev/workspace/readline-6.2/terminal.c:415: undefined reference to `tgetstr'
/usr/local/lib/lftp/4.3.7/libreadline.a(terminal.o): In function `_rl_init_terminal_io':
/home/dev/workspace/readline-6.2/terminal.c:516: undefined reference to `tgetflag'
/home/dev/workspace/readline-6.2/terminal.c:516: undefined reference to `tgetflag'
/home/dev/workspace/readline-6.2/terminal.c:531: undefined reference to `tgetflag'
/home/dev/workspace/readline-6.2/terminal.c:546: undefined reference to `PC'
/home/dev/workspace/readline-6.2/terminal.c:546: undefined reference to `BC'
/home/dev/workspace/readline-6.2/terminal.c:546: undefined reference to `UP'
collect2: ld returned 1 exit status
make[1]: *** [lftp] Error 1
make[1]: Leaving directory `/home/dev/workspace/sslftp/lftp-4.3.7/src'
make: *** [all-recursive] Error 1

Теперь: 1. Если бы кто-нибудь мог помочь мне выяснить проблему здесь? 2. или каким-либо образом я мог пропустить добавление этой библиотеки для чтения? (опция '--with-readline=no' не настроена в конфигурационном файле).

Я пытаюсь выполнить кросс-компиляцию с 4-5 дней и все еще зависаю с этим. Кто-нибудь поможет мне, пожалуйста.

Спасибо, Рахул


person RPS    schedule 09.06.2012    source источник


Ответы (1)


Учитывая неопределенные ссылки, такие как tputs(http://linux.die.net/man/3/tputs), похоже, они являются частью библиотеки ncurses (http://www.gnu.org/software/ncurses/). Вам нужно будет перекрестно скомпилировать и связать с ncurses.

person panickal    schedule 09.06.2012
comment
Спасибо, Deepak. Я перекомпилировал исходный код ncurses и изменил файл конфигурации lftp, включив в него libncurses.a. Это решило вышеуказанные проблемы. - person RPS; 15.06.2012