uclibc supports cross-compiling ncurses?

Juan Lablanca juan.lablanca at yacoub.de
Fri Sep 23 13:37:50 UTC 2005


Taking into acount Steven's advice, I downloaded and compiled
sucessfully buildroot (as explained on
http://buildroot.uclibc.org/buildroot.html) with the following
configuration:

-Packet: ncurses
-Target Architecture: arm
-Target Processor type: generic arm
-Target Processor Endianess: Little Endian
-MMU: no
and i set "no" the rest of the options.

by the way, I had to fix a bug for this configuration, rebuilding busybox.

I got the files under /package/ncurses, ncurses.mk and Config.in from
http://www.uclibc.org/cgi-bin/cvsweb/trunk/buildroot/package/ncurses/.
Then i tried to compile my ncurses-program with this new created
compiler (arm-linux-gcc), but it failed by linking since all the ncurses
functions can not be found.

The makefile that i used to compile the ncurses program is as follows:

******************************************************************************************************
CROSSCOMPILE:=
/targets/LxNETES/buildroot/build_arm/staging_dir/bin/arm-linux-

CC            := ${CROSSCOMPILE}gcc
LD            := ${CROSSCOMPILE}gcc
RM            := rm -f

SRC_DIR        := ${PWD}/src
INC_DIR        := ${PWD}/include
BUILD_DIR    := ${PWD}/build
BIN_DIR        := ${PWD}/bin
VPATH        := ${SRC_DIR}:${BUILD_DIR}
MAKEFILE    := ${PWD}/Makefile
DEP_FILE    := ${PWD}/.depend



    UCLIBC        := /targets/LxNETES/buildroot/toolchain_build_arm/uClibc
    INCLUDES     := -I${INC_DIR} -I${UCLIBC}/include -I${UCLIBC}/libm
-I${UCLIBC}/libc
    INCLUDES     +=
-I/targets/LxNETES/buildroot/build_arm/ncurses-5.4/include
    STDFLAGS    := -g -Wall -Wstrict-prototypes -Wno-trigraphs -O2
-fno-strict-aliasing -fno-common -pipe
    STDFLAGS    += -W -ansi -D_SVID_SOURCE -D_XOPEN_SOURCE
    STDFLAGS    += -fno-builtin -DNO_MM -mapcs-32 -mtune=arm7tdmi
-nostdinc -iwithprefix include
    CFLAGS        := ${STDFLAGS} ${DEFINES} ${INCLUDES}

    LFLAGS        := -s  -static
    LFLAGS        += -L${UCLIBC}/lib -L${UCLIBC}/libc
-L/targets/LxNETES/buildroot/build_arm/ncurses-5.4/lib
    LFLAGS       +=
/usr/local/LxNETES-2.3/arm-elf/uClibc-0.9.19/lib/crt0.o
/usr/local/LxNETES-2.3/arm-elf/uClibc-0.9.19/lib/crti.o
/usr/local/LxNETES-2.3/arm-elf/uClibc-0.9.19/lib/crtn.o
    LFLAGS        += -nostartfiles -W -Wall -Ws -fno-builtin
-Wl,-elf2flt -lform -lmenu -lncurses

/targets/LxNETES/buildroot/build_arm/ncurses-5.4/lib/libpanel.so.5.4
/targets/LxNETES/buildroot/build_arm/ncurses-5.4/lib/libmenu.so.5.4
/targets/LxNETES/buildroot/build_arm/ncurses-5.4/lib/libncurses.so.5.4

/usr/local/LxNETES-2.3/arm-elf/uClibc-0.9.19/lib/crtn.o -lform -lmenu
-lpanel -lncurses
 /targets/LxNETES/buildroot/build_arm/ncurses-5.4/lib/libpanel.a
/targets/LxNETES/buildroot/build_arm/ncurses-5.4/lib/libmenu.a
/targets/LxNETES/buildroot/build_arm/ncurses-5.4/lib/libncurses.a


SRC_OBJS    := main19.c shm_init.c shm_read.c shm_write.c shm_remove.c
MOD_OBJS    := ${SRC_OBJS:%.c=${BUILD_DIR}/%.o}
TARGET        := ${BIN_DIR}/main19


all: ${TARGET}


${TARGET}: ${MOD_OBJS}
    ${LD} ${LFLAGS} $? -o ${TARGET}

clean: ${MAKEFILE}
    ${RM} ${MOD_OBJS} ${TARGET}

dep: ${DEP_FILE}
${DEP_FILE}: ${SRC_OBJS}
    ${CC} -MM ${CFLAGS} $< > ${DEP_FILE}

${BUILD_DIR}/%.o: %.c ${MAKEFILE}
    ${CC} ${CFLAGS} -c $< -o $@
******************************************************************************************************

A part of the compiling output is:

/targets/LxNETES/buildroot/build_arm/staging_dir/bin/arm-linux-gcc -s
-static -L/targets/LxNETES/buildroot/toolchain_build_arm/uClibc/lib
-L/targets/LxNETES/buildroot/toolchain_build_arm/uClibc/libc
-L/targets/LxNETES/buildroot/build_arm/ncurses-5.4/lib
/usr/local/LxNETES-2.3/arm-elf/uClibc-0.9.19/lib/crt0.o
/usr/local/LxNETES-2.3/arm-elf/uClibc-0.9.19/lib/crti.o
/usr/local/LxNETES-2.3/arm-elf/uClibc-0.9.19/lib/crtn.o -nostartfiles -W
-Wall -Ws -fno-builtin -Wl,-elf2flt -lform -lmenu -lncurses
/home/juan/ucterminal/build/main19.o
/home/juan/ucterminal/build/shm_init.o
/home/juan/ucterminal/build/shm_read.o
/home/juan/ucterminal/build/shm_write.o
/home/juan/ucterminal/build/shm_remove.o -o
/home/juan/ucterminal/bin/main19
/targets/LxNETES/buildroot/build_arm/staging_dir/bin-ccache/../lib/gcc/arm-linux-uclibc/3.4.2/../../../../arm-linux-uclibc/bin/ld:
warning: cannot find entry symbol lf2flt; defaulting to 000080c0
/home/juan/ucterminal/build/main19.o: In function `create_menu':
/home/juan/ucterminal/src/main19.c:854: undefined reference to `new_menu'
/home/juan/ucterminal/src/main19.c:857: undefined reference to `newwin'
/home/juan/ucterminal/src/main19.c:858: undefined reference to `keypad'
/home/juan/ucterminal/src/main19.c:861: undefined reference to
`set_menu_win'
/home/juan/ucterminal/src/main19.c:862: undefined reference to
`set_menu_format'
...

Right now what i am wondering is whether arm-linux-elf supports ncurses.
Could you guys please give me a hand to solve that?

Best regards,

Juanfran.






More information about the uClibc mailing list