 |
forums.ps2dev.org Homebrew PS2, PSP & PS3 Development Discussions
|
| View previous topic :: View next topic |
| Author |
Message |
angus
Joined: 04 Jan 2010 Posts: 3
|
Posted: Thu Jan 07, 2010 7:36 am Post subject: [SOLVED]Problem building with SDL |
|
|
Hi,
I'm working on porting bochs, but I'm running across a problem when it comes to building with SDL. My error is as follows
Error
| Code: |
/bin/sh ./libtool --mode=link psp-g++ -o bochs -g -Wall -G0 -O2 -I/usr/local/pspdev/psp/sdk/include -D_PSP_FW_VERSION=371 -specs=/usr/local/pspdev/psp/sdk/lib/prxspecs -Wl,-q,-T/usr/local/pspdev/psp/sdk/lib/linkfile.prx -L/usr/local/pspdev/psp/sdk/lib -export-dynamic logio.o main.o config.o load32bitOShack.o pc_system.o osdep.o plugin.o crc.o \
iodev/libiodev.a cpu/libcpu.a memory/libmemory.a gui/libgui.a \
disasm/libdisasm.a \
fpu/libfpu.a \
`/usr/local/pspdev/psp/bin/sdl-config --cflags --libs` \
-lc -lpspuser -lm -lSDLmain -lSDL -lc -lg -lGL -L/usr/local/pspdev/psp/sdk/lib -lpspdebug -lpspgu -lpspctrl -lpspge -lpspdisplay -lpsphprm -lpspvfpu -lpspsdk -lpsprtc -lpspaudio -lc -lpspuser -lpsputility -lpspkernel -lpspnet_inet -lpspnet_resolver
psp-g++ -o bochs -g -Wall -G0 -O2 -I/usr/local/pspdev/psp/sdk/include -D_PSP_FW_VERSION=371 -specs=/usr/local/pspdev/psp/sdk/lib/prxspecs -Wl,-q -Wl,-T/usr/local/pspdev/psp/sdk/lib/linkfile.prx logio.o main.o config.o load32bitOShack.o pc_system.o osdep.o plugin.o crc.o -I/usr/local/pspdev/psp/include/SDL -Dmain=SDL_main -Wl,--export-dynamic -L/usr/local/pspdev/psp/sdk/lib iodev/libiodev.a cpu/libcpu.a memory/libmemory.a gui/libgui.a disasm/libdisasm.a fpu/libfpu.a -L/usr/local/pspdev/psp/lib -lSDLmain /usr/local/pspdev/psp/lib/libSDL.a /usr/local/pspdev/psp/lib/libstdc++.a -lm -lg -lGL -lpspdebug -lpspgu -lpspctrl -lpspge -lpspdisplay -lpsphprm -lpspvfpu -lpspsdk -lpsprtc -lpspaudio -lc -lpspuser -lpsputility -lpspkernel -lpspnet_inet -lpspnet_resolver
/usr/local/pspdev/psp/lib/libSDLmain.a(SDL_psp_main.o): In function `main':
psp/SDL_psp_main.c:76: undefined reference to `SDL_main'
collect2: ld returned 1 exit status
make: *** [bochs] Error 1
|
I have an SDL_main in my source (I've tried main and SDL_main, both with extern "C" but neither fixed the problem). I also include SDL.h
I believe it may be a problem with my makefile (seen below). I've had a look and tried many things to rectify the problem but nothing I have tried seems to have worked.
Any help at all will be appreciated.
Makefile
| Code: |
prefix = /usr/local/pspdev/psp
exec_prefix = ${prefix}
srcdir = .
#PSP stuff to compile it
TARGET = bochs
BUILD_PRX=1
PSP_FW_VERSION=371
PSP_LARGE_MEMORY=1
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Bochs
PSPSDK=$(shell psp-config --pspsdk-path)
PSPBIN = $(PSPSDK)/../bin
bindir = ${exec_prefix}/bin
libdir = ${exec_prefix}/lib
plugdir = ${exec_prefix}/lib/bochs/plugins
datarootdir = ${prefix}/share
mandir = ${datarootdir}/man
man1dir = $(mandir)/man1
man5dir = $(mandir)/man5
docdir = $(datarootdir)/doc/bochs
sharedir = $(datarootdir)/bochs
top_builddir = .
top_srcdir = $(srcdir)
DESTDIR =/home/angus
VERSION=2.4.2
VER_STRING=2.4.2-PSP
REL_STRING=Build from CVS snapshot on November 12, 2009
MAN_PAGE_1_LIST=bochs bximage bxcommit bochs-dlx
MAN_PAGE_5_LIST=bochsrc
INSTALL_LIST_SHARE=bios/BIOS-bochs-* bios/VGABIOS*
INSTALL_LIST_BIN=bochs
INSTALL_LIST_BIN_OPTIONAL=bochsdbg
CP=cp
CAT=cat
RM=rm
MV=mv
LN_S=ln -sf
#DLXLINUX_TAR=dlxlinux4.tar.gz
#DLXLINUX_TAR_URL=http://bochs.sourceforge.net/guestos/$(DLXLINUX_TAR)
#DLXLINUX_ROMFILE=BIOS-bochs-latest
GUNZIP=gunzip
WGET=wget
SED=sed
MKDIR=mkdir
RMDIR=rmdir
TAR=tar
CHMOD=chmod
GZIP_BIN=gzip -9
GUNZIP=gunzip
ZIP=zip
UNIX2DOS=unix2dos
LIBTOOL=$(SHELL) $(top_builddir)/libtool
DLLTOOL=dlltool
RC_CMD=
.SUFFIXES: .cc
srcdir = .
SHELL = /bin/sh
CC = psp-gcc
CXX = psp-g++
AS = psp-gcc
LD = psp-gcc
AR = psp-ar
RANLIB = psp-ranlib
STRIP = psp-strip
MKSFO = mksfo
PACK_PBP = pack-pbp
FIXUP = psp-fixup-imports
PSPSDK_LIBC_LIB = -lc
INCDIR =$(PSPSDK)/include
CFLAGS = -g -Wall -G0 -O2 -I$(INCDIR)
CXXFLAGS = -g -Wall -G0 -O2 -I$(INCDIR)
#Check for slim memory flag
ifeq ($(PSP_LARGE_MEMORY),1)
MKSFO = mksfoex -d MEMSIZE=1
endif
#Set firmware version(apparantly?)
CFLAGS += -D_PSP_FW_VERSION=$(PSP_FW_VERSION) $(SHELL $(PSPBIN)/sdl-config --cflags)
CXXFLAGS += -D_PSP_FW_VERSION=$(PSP_FW_VERSION) $(SHELL $(PSPBIN)/sdl-config --cflags)
#must be above the prx check
LDFLAGS = -L/usr/local/pspdev/psp/sdk/lib
#Check if we want PRX (yarp)
ifeq ($(BUILD_PRX),1)
LDFLAGS := $(addprefix -L,$(LIBDIR)) -specs=$(PSPSDK)/lib/prxspecs -Wl,-q,-T$(PSPSDK)/lib/linkfile.prx $(LDFLAGS)
EXTRA_CLEAN += $(TARGET).elf
# Setup default exports if needed
ifdef PRX_EXPORTS
EXPORT_OBJ=$(patsubst %.exp,%.o,$(PRX_EXPORTS))
EXTRA_CLEAN += $(EXPORT_OBJ)
else
EXPORT_OBJ=$(PSPSDK)/lib/prxexports.o
endif
else
LDFLAGS := $(addprefix -L,$(LIBDIR)) $(LDFLAGS)
endif
LIBS = -lc -lpspuser -lm -lSDLmain -lSDL -lc -lg -lGL -L/usr/local/pspdev/psp/sdk/lib -lpspdebug -lpspgu -lpspctrl -lpspge -lpspdisplay -lpsphprm -lpspvfpu -lpspsdk -lpsprtc -lpspaudio -lc -lpspuser -lpsputility -lpspkernel -lpspnet_inet -lpspnet_resolver $(SHELL $(PSPBIN)/sdl-config --libs)
GUI_LINK_OPTS_SDL = `/usr/local/pspdev/psp/bin/sdl-config --cflags --libs`
GUI_LINK_OPTS = $(GUI_LINK_OPTS_SDL)
#Start eboot flags
PSP_EBOOT_TITLE = $(TARGET)
PSP_EBOOT_SFO = PARAM.SFO
PSP_EBOOT = EBOOT.PBP
#more snazzy prx stuff
ifeq ($(BUILD_PRX),1)
ifneq ($(TARGET_LIB),)
$(error TARGET_LIB should not be defined when building a prx)
else
FINAL_TARGET = $(TARGET).prx
endif
else
ifneq ($(TARGET_LIB),)
FINAL_TARGET = $(TARGET_LIB)
else
FINAL_TARGET = $(TARGET).elf
endif
endif
#end eboot flags
CFLAGS_CONSOLE = -g -G0 -O2 $(MCH_CFLAGS) $(FLA_FLAGS) -test
CXXFLAGS_CONSOLE = -g -G0 -O2 $(MCH_CFLAGS) $(FLA_FLAGS) -test
BXIMAGE_LINK_OPTS =
BX_INCDIRS = -I. -I$(srcdir)/. -Iinstrument/stubs -I$(srcdir)/instrument/stubs -I,$(INCDIR)
NONINLINE_OBJS = \
logio.o \
main.o \
config.o \
load32bitOShack.o \
pc_system.o \
osdep.o \
plugin.o \
crc.o
EXTERN_ENVIRONMENT_OBJS = \
main.o \
config.o \
load32bitOShack.o \
pc_system.o
DEBUGGER_LIB = bx_debug/libdebug.a
DISASM_LIB = disasm/libdisasm.a
INSTRUMENT_LIB = instrument/stubs/libinstrument.a
FPU_LIB = fpu/libfpu.a
READLINE_LIB =
EXTRA_LINK_OPTS =
GDBSTUB_OBJS = gdbstub.o
BX_OBJS = $(NONINLINE_OBJS)
BX_INCLUDES = bochs.h config.h osdep.h
.cc.o:
$(CXX) -c $(BX_INCDIRS) $(CXXFLAGS) $< -o $@
.c.o:
$(CC) -c $(BX_INCDIRS) $(CFLAGS) $(FPU_FLAGS) $< -o $@
all: bochs
bochs: iodev/libiodev.a \
cpu/libcpu.a memory/libmemory.a gui/libgui.a \
$(DISASM_LIB) $(BX_OBJS) \
$(SIMX86_OBJS) $(FPU_LIB)
$(LIBTOOL) --mode=link $(CXX) -o $@ $(CXXFLAGS) $(LDFLAGS) -export-dynamic $(BX_OBJS) $(SIMX86_OBJS) \
iodev/libiodev.a cpu/libcpu.a memory/libmemory.a gui/libgui.a \
$(DISASM_LIB) \
$(FPU_LIB) \
$(GUI_LINK_OPTS) \
$(MCH_LINK_FLAGS) \
$(SIMX86_LINK_FLAGS) \
$(READLINE_LIB) \
$(EXTRA_LINK_OPTS) \
$(LIBS)
bochs_plugins:
cd gui && \
$(MAKE) plugins
echo done
cd iodev && \
$(MAKE) plugins
echo done
bxcommit: misc/bxcommit.o
$(LIBTOOL) --mode=link $(CXX) -o $@ $(CXXFLAGS_CONSOLE) $(LDFLAGS) misc/bxcommit.o
niclist: misc/niclist.o
$(LIBTOOL) --mode=link $(CXX) -o $@ $(CXXFLAGS_CONSOLE) $(LDFLAGS) misc/niclist.o
misc/bxcommit.o: $(srcdir)/misc/bxcommit.c $(srcdir)/iodev/hdimage.h
$(CC) -c $(BX_INCDIRS) $(CFLAGS_CONSOLE) $(srcdir)/misc/bxcommit.c -o $@
misc/niclist.o: $(srcdir)/misc/niclist.c
$(CC) -c $(BX_INCDIRS) $(CFLAGS_CONSOLE) $(srcdir)/misc/niclist.c -o $@
$(BX_OBJS): $(BX_INCLUDES)
# cannot use -C option to be compatible with Microsoft nmake
iodev/libiodev.a::
cd iodev && \
$(MAKE) $(MDEFINES) libiodev.a
echo done
bx_debug/libdebug.a::
cd bx_debug && \
$(MAKE) $(MDEFINES) libdebug.a
echo done
cpu/libcpu.a::
cd cpu && \
$(MAKE) $(MDEFINES) libcpu.a
echo done
memory/libmemory.a::
cd memory && \
$(MAKE) $(MDEFINES) libmemory.a
echo done
gui/libgui.a::
cd gui && \
$(MAKE) $(MDEFINES) libgui.a
echo done
disasm/libdisasm.a::
cd disasm && \
$(MAKE) $(MDEFINES) libdisasm.a
echo done
instrument/stubs/libinstrument.a::
cd instrument/stubs && \
$(MAKE) $(MDEFINES) libinstrument.a
echo done
fpu/libfpu.a::
cd fpu && \
$(MAKE) $(MDEFINES) libfpu.a
echo done
libbochs.a:
-rm -f libbochs.a
ar rv libbochs.a $(EXTERN_ENVIRONMENT_OBJS)
$(RANLIB) libbochs.a
libbochs_cpu.a: $(BX_OBJS)
-rm -f libbochs_cpu.a
ar rv libbochs_cpu.a $(BX_OBJS)
$(RANLIB) libbochs_cpu.a
tar:
NAME=`pwd|$(SED) 's/.*\///'`; (cd ..; $(RM) -f $$NAME.zip; tar cf - $$NAME | $(GZIP_BIN) > $$NAME.tar.gz); ls -l ../$$NAME.tar.gz
zip:
NAME=`pwd|$(SED) 's/.*\///'`; (cd ..; $(RM) -f $$NAME-msvc-src.zip; $(ZIP) $$NAME-msvc-src.zip -r $$NAME -x \*CVS\* -x \*.cvsignore ); ls -l ../$$NAME-msvc-src.zip
clean:
rm -f *.o
rm -f *.a
rm -f bochs
rm -f bochs.exe
rm -f bximage
rm -f bximage.exe
rm -f bxcommit
rm -f bxcommit.exe
rm -f niclist
rm -f niclist.exe
rm -f bochs.out
rm -f bochsout.txt
rm -f bochs.exp
rm -f bochs.def
rm -f bochs.scpt
rm -f -rf bochs.app
rm -f -rf .libs
rm -f .win32_dll_plugin_target
all-clean: clean
cd iodev && \
$(MAKE) clean
echo done
cd bx_debug && \
$(MAKE) clean
echo done
cd cpu && \
$(MAKE) clean
echo done
cd memory && \
$(MAKE) clean
echo done
cd gui && \
$(MAKE) clean
echo done
cd disasm && \
$(MAKE) clean
echo done
cd instrument/stubs && \
$(MAKE) clean
echo done
cd misc && \
$(MAKE) clean
echo done
cd fpu && \
$(MAKE) clean
echo done
cd doc/docbook && \
$(MAKE) clean
echo done
cd host/linux/pcidev && \
$(MAKE) clean
echo done
###########################################
# dependencies generated by
# gcc -MM -I. -Iinstrument/stubs *.cc | sed -e 's/\.cc/.cc/g' -e 's,cpu/,cpu/,g'
###########################################
config.o: config.cc bochs.h config.h osdep.h bx_debug/debug.h config.h \
osdep.h bxversion.h gui/siminterface.h memory/memory.h pc_system.h \
plugin.h extplugin.h ltdl.h gui/gui.h instrument/stubs/instrument.h \
iodev/iodev.h bochs.h iodev/vga.h
crc.o: crc.cc config.h
gdbstub.o: gdbstub.cc bochs.h config.h osdep.h bx_debug/debug.h config.h \
osdep.h bxversion.h gui/siminterface.h memory/memory.h pc_system.h \
plugin.h extplugin.h ltdl.h gui/gui.h instrument/stubs/instrument.h \
cpu/cpu.h cpu/crregs.h cpu/descriptor.h cpu/instr.h cpu/lazy_flags.h \
cpu/icache.h cpu/apic.h cpu/i387.h fpu/softfloat.h fpu/tag_w.h \
fpu/status_w.h fpu/control_w.h cpu/xmm.h cpu/stack.h iodev/iodev.h \
bochs.h iodev/vga.h
load32bitOShack.o: load32bitOShack.cc bochs.h config.h osdep.h \
bx_debug/debug.h config.h osdep.h bxversion.h gui/siminterface.h \
memory/memory.h pc_system.h plugin.h extplugin.h ltdl.h gui/gui.h \
instrument/stubs/instrument.h cpu/cpu.h cpu/crregs.h cpu/descriptor.h \
cpu/instr.h cpu/lazy_flags.h cpu/icache.h cpu/apic.h cpu/i387.h \
fpu/softfloat.h fpu/tag_w.h fpu/status_w.h fpu/control_w.h cpu/xmm.h \
iodev/iodev.h bochs.h iodev/vga.h
logio.o: logio.cc bochs.h config.h osdep.h bx_debug/debug.h config.h \
osdep.h bxversion.h gui/siminterface.h memory/memory.h pc_system.h \
plugin.h extplugin.h ltdl.h gui/gui.h instrument/stubs/instrument.h \
cpu/cpu.h cpu/crregs.h cpu/descriptor.h cpu/instr.h cpu/lazy_flags.h \
cpu/icache.h cpu/apic.h cpu/i387.h fpu/softfloat.h fpu/tag_w.h \
fpu/status_w.h fpu/control_w.h cpu/xmm.h iodev/iodev.h bochs.h \
iodev/vga.h
main.o: main.cc bochs.h config.h osdep.h bx_debug/debug.h config.h \
osdep.h bxversion.h gui/siminterface.h memory/memory.h pc_system.h \
plugin.h extplugin.h ltdl.h gui/gui.h instrument/stubs/instrument.h \
gui/textconfig.h cpu/cpu.h cpu/crregs.h cpu/descriptor.h cpu/instr.h \
cpu/lazy_flags.h cpu/icache.h cpu/apic.h cpu/i387.h fpu/softfloat.h \
fpu/tag_w.h fpu/status_w.h fpu/control_w.h cpu/xmm.h iodev/iodev.h \
bochs.h iodev/vga.h
osdep.o: osdep.cc bochs.h config.h osdep.h bx_debug/debug.h config.h \
osdep.h bxversion.h gui/siminterface.h memory/memory.h pc_system.h \
plugin.h extplugin.h ltdl.h gui/gui.h instrument/stubs/instrument.h
pc_system.o: pc_system.cc bochs.h config.h osdep.h bx_debug/debug.h \
config.h osdep.h bxversion.h gui/siminterface.h memory/memory.h \
pc_system.h plugin.h extplugin.h ltdl.h gui/gui.h \
instrument/stubs/instrument.h cpu/cpu.h cpu/crregs.h cpu/descriptor.h \
cpu/instr.h cpu/lazy_flags.h cpu/icache.h cpu/apic.h cpu/i387.h \
fpu/softfloat.h fpu/tag_w.h fpu/status_w.h fpu/control_w.h cpu/xmm.h \
iodev/iodev.h bochs.h iodev/vga.h
plex86-interface.o: plex86-interface.cc bochs.h config.h osdep.h \
bx_debug/debug.h config.h osdep.h bxversion.h gui/siminterface.h \
memory/memory.h pc_system.h plugin.h extplugin.h ltdl.h gui/gui.h \
instrument/stubs/instrument.h plex86-interface.h plex86/plex86.h \
plex86/descriptor.h
plugin.o: plugin.cc bochs.h config.h osdep.h bx_debug/debug.h config.h \
osdep.h bxversion.h gui/siminterface.h memory/memory.h pc_system.h \
plugin.h extplugin.h ltdl.h gui/gui.h instrument/stubs/instrument.h \
iodev/iodev.h bochs.h iodev/vga.h
#psp stuff
kxploit: $(TARGET).elf $(PSP_EBOOT_SFO)
mkdir -p "$(TARGET)"
$(STRIP) $(TARGET).elf -o $(TARGET)/$(PSP_EBOOT)
mkdir -p "$(TARGET)%"
$(PACK_PBP) "$(TARGET)%/$(PSP_EBOOT)" $(PSP_EBOOT_SFO) $(PSP_EBOOT_ICON) \
$(PSP_EBOOT_ICON1) $(PSP_EBOOT_UNKPNG) $(PSP_EBOOT_PIC1) \
$(PSP_EBOOT_SND0) NULL $(PSP_EBOOT_PSAR)
SCEkxploit: $(TARGET).elf $(PSP_EBOOT_SFO)
mkdir -p "__SCE__$(TARGET)"
$(STRIP) $(TARGET).elf -o __SCE__$(TARGET)/$(PSP_EBOOT)
mkdir -p "%__SCE__$(TARGET)"
$(PACK_PBP) "%__SCE__$(TARGET)/$(PSP_EBOOT)" $(PSP_EBOOT_SFO) $(PSP_EBOOT_ICON) \
$(PSP_EBOOT_ICON1) $(PSP_EBOOT_UNKPNG) $(PSP_EBOOT_PIC1) \
$(PSP_EBOOT_SND0) NULL $(PSP_EBOOT_PSAR)
$(TARGET).elf: $(OBJS) $(EXPORT_OBJ)
$(LINK.c) $^ $(LIBS) -o $@
$(FIXUP) $@
$(TARGET_LIB): $(OBJS)
$(AR) cru $@ $(OBJS)
$(RANLIB) $@
$(PSP_EBOOT_SFO):
$(MKSFO) '$(PSP_EBOOT_TITLE)' $@
ifeq ($(BUILD_PRX),1)
$(PSP_EBOOT): $(TARGET).prx $(PSP_EBOOT_SFO)
$(PACK_PBP) $(PSP_EBOOT) $(PSP_EBOOT_SFO) $(PSP_EBOOT_ICON) \
$(PSP_EBOOT_ICON1) $(PSP_EBOOT_UNKPNG) $(PSP_EBOOT_PIC1) \
$(PSP_EBOOT_SND0) $(TARGET).prx $(PSP_EBOOT_PSAR)
else
$(PSP_EBOOT): $(TARGET).elf $(PSP_EBOOT_SFO)
$(STRIP) $(TARGET).elf -o $(TARGET)_strip.elf
$(PACK_PBP) $(PSP_EBOOT) $(PSP_EBOOT_SFO) $(PSP_EBOOT_ICON) \
$(PSP_EBOOT_ICON1) $(PSP_EBOOT_UNKPNG) $(PSP_EBOOT_PIC1) \
$(PSP_EBOOT_SND0) $(TARGET)_strip.elf $(PSP_EBOOT_PSAR)
-rm -f $(TARGET)_strip.elf
endif
%.prx: %.elf
psp-prxgen $< $@
%.c: %.exp
psp-build-exports -b $< > $@
##end psp stuff
|
Last edited by angus on Fri Jan 08, 2010 8:26 am; edited 1 time in total |
|
| Back to top |
|
 |
sauron_le_noir
Joined: 05 Jul 2008 Posts: 229
|
Posted: Fri Jan 08, 2010 8:04 am Post subject: |
|
|
try changing int main() by int SDL_main()
Be carrefull SDL_main is case sensitive |
|
| Back to top |
|
 |
angus
Joined: 04 Jan 2010 Posts: 3
|
Posted: Fri Jan 08, 2010 8:25 am Post subject: |
|
|
Thanks, but it wasn't that. I realised that i hadn't actually initialised SDL. Thanks anyway! All works now.
For anyone else interested, i added an initialization statement at the top of my SDL_main()
| Code: |
if (SDL_Init (SDL_INIT_VIDEO|SDL_INIT_AUDIO|SDL_INIT_JOYSTICK) < 0)
{
}
else
{
}
|
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|