[Live-devel] Compilation under uClinux

Arthur Shipkowski art at videon-central.com
Wed Sep 7 15:38:25 PDT 2005


Greetings,

I have been attempting to get the live.com distribution from 8/26 to compile
as part of the uClinux distribution. (The new-as-of-yesterday version didn't
appear to have a compelling reason for me to grab it immediately.)

I have generated the below config.uClinux:
COMPILE_OPTS =
     $(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t -D_LARGEFILE_SOURCE=1
C =         c
C_COMPILER =        $(CC)
CFLAGS +=       $(COMPILE_OPTS)
C_FLAGS = $(CFLAGS)
CPP =           cpp
CPLUSPLUS_COMPILER =    $(CXX)
CPLUSPLUS_FLAGS =   $(COMPILE_OPTS) -Wall -DBSD=1
CPLUSPLUS_FLAGS += $(CPPFLAGS) -fexceptions
OBJ =           o
LINK =          $(CXX) -o
LINK_OPTS =     -L. $(LDFLAGS)
CONSOLE_LINK_OPTS = $(LINK_OPTS)
LIBRARY_LINK =  $(AR) cvrs
LIBRARY_LINK_OPTS =
LIB_SUFFIX =            a
LIBS_FOR_CONSOLE_APPLICATION = $(CXXLIBS)
LIBS_FOR_GUI_APPLICATION = $(LIBS_FOR_CONSOLE_APPLICATION)
EXE =

Unfortunately, when it gets to compiling the test programs, I get the below:
m68k-elf-g++ -m5307 -DCONFIG_COLDFIRE -otestMP3Streamer -L. -Os -g -fomit-fr
ame-pointer -m5307 -DCONFIG_COLDFIRE -fno-common -Wall   -Dlinux -D__linux__
 -Dunix -D__uClinux__ -DEMBED -nostdinc -isystem
/home/art/Streamer/uClinux/uClinux-dist/include -isystem
/home/art/Streamer/uClinux/uClinux-dist/include/include -fno-builtin -msep-d
ata -Wl,-elf2flt -Wl,-move-rodata -nostartfiles
/home/art/Streamer/uClinux/uClinux-dist/lib/crt0.o -L/home/art/Streamer/uCli
nux/uClinux-dist/lib testMP3Streamer.o ../liveMedia/libliveMedia.a
../groupsock/libgroupsock.a ../UsageEnvironment/libUsageEnvironment.a
../BasicUsageEnvironment/libBasicUsageEnvironment.a -Wl,-Bstatic -lstdc++ -W
l,-Bdynamic -liberty -lc -lgcc
testMP3Streamer.elf2flt: In function `our_random32':
/home/art/Streamer/Streamer/src/uClinux/uClinux-dist/vendors/Test/Streamer/l
ive/groupsock/inet.c:449: undefined reference to
`UsageEnvironment::UsageEnvironment(TaskScheduler &)'
/home/art/Streamer/Streamer/src/uClinux/uClinux-dist/vendors/Test/Streamer/l
ive/groupsock/inet.c:449: undefined reference to
`UsageEnvironment::~UsageEnvironment(void)'
/home/art/Streamer/Streamer/src/uClinux/uClinux-dist/vendors/Test/Streamer/l
ive/groupsock/inet.c:449: undefined reference to
`UsageEnvironment::~UsageEnvironment(void)'
/home/art/Streamer/Streamer/src/uClinux/uClinux-dist/vendors/Test/Streamer/l
ive/groupsock/inet.c:449: undefined reference to
`TaskScheduler::TaskScheduler(void)'
/home/art/Streamer/Streamer/src/uClinux/uClinux-dist/vendors/Test/Streamer/l
ive/groupsock/inet.c:449: undefined reference to
`TaskScheduler::~TaskScheduler(void)'
/home/art/Streamer/Streamer/src/uClinux/uClinux-dist/vendors/Test/Streamer/l
ive/groupsock/inet.c:449: undefined reference to
`TaskScheduler::~TaskScheduler(void)'
testMP3Streamer.elf2flt: In function `operator new [](unsigned long, void
*)':
/home/davidm/work/uclinux-elf-tools/m68k-elf-gcc/gcc/include/new(.gnu.linkon
ce.t.__tf19BasicTaskScheduler0+0x12): undefined reference to `TaskScheduler
type_info function'
/home/davidm/work/uclinux-elf-tools/m68k-elf-gcc/gcc/include/new(.gnu.linkon
ce.t.__tf19BasicTaskScheduler0+0x18): undefined reference to `TaskScheduler
type_info node'
/home/davidm/work/uclinux-elf-tools/m68k-elf-gcc/gcc/include/new(.gnu.linkon
ce.t.__tf22BasicUsageEnvironment0+0x12): undefined reference to
`UsageEnvironment type_info function'
/home/davidm/work/uclinux-elf-tools/m68k-elf-gcc/gcc/include/new(.gnu.linkon
ce.t.__tf22BasicUsageEnvironment0+0x18): undefined reference to
`UsageEnvironment type_info node'
/home/davidm/work/uclinux-elf-tools/m68k-elf-gcc/gcc/include/new(.gnu.linkon
ce.d._vt.19BasicTaskScheduler0+0x24): undefined reference to
`TaskScheduler::rescheduleDelayedTask(void *&, int, void (*)(void *), void
*)'
/home/davidm/work/uclinux-elf-tools/m68k-elf-gcc/gcc/include/new(.gnu.linkon
ce.d._vt.18BasicTaskScheduler+0x24): undefined reference to
`TaskScheduler::rescheduleDelayedTask(void *&, int, void (*)(void *), void
*)'
collect2: ld returned 1 exit status

I tried changing the linker to use m68k-elf-ld to perform the link rather
than m68k-elf-g++; after more tweaking (the uClinux distribution seems to
assume by default that you want to use gcc or g++ to do your link stage), I
received the same result.  I also tried compiling with shared libraries on
and off.  I'm compiling using the 20030314 elf-tools from uclinux.org
(m68k-elf-gcc 2.95.3 with patches), as everything else I use (2.4.x Linux
kernel, etc) works with that.

Any suggestions?  I'm afraid it's something quite obvious, but
libUsageEnvironment.a is theoretically being linked above.

I did see that some of you had gotten it running under uClinux, so if you
could offer your configuration files it might be helpful.

Thank you all for your time.

Art Shipkowski
Videon Central Software Engineer
(814)235-1111 x307
art at videon-central.com





More information about the live-devel mailing list