Wenn ich ein Plugin baue, welches aus Test.cpp & Test.h besteht klappt alles mit dem bauen.
Ich habe ein makefile
CDK_SRC = /home/asterix/dreambox-cdk/
CDKROOT = /home/asterix/dreambox-cdk/root/cdkroot/
BOXBIN = /home/asterix/dreambox-cdk/root/cdk/bin/
CROSS = /home/asterix/dreambox-cdk/root/cdk/powerpc-tuxbox-linux-gnu/bin/
CC = $(CROSS)g++
CXX = $(CC)
STRIP = $(CROSS)strip
DBG = -DDEBUG
CFLAGS = $(INCLUDES) -fno-rtti -fno-exceptions -Wall -O2 -mcpu=405 -msoft-float -mmultiple -mstring -g -ggdb3 -pipe
OBJECTS = Test.o
INCLUDES = -I$(CDK_SRC)/apps/tuxbox/enigma/include \
-I$(CDKROOT)/include \
-I$(CDKROOT)/include/sigc++-1.2 \
-I$(CDKROOT)/include/freetype2 \
-I$(CDKROOT)/lib/sigc++-1.2/include \
-I$(CDK_SRC)/driver/include \
-I$(CDK_SRC)/apps/tuxbox/enigma \
-I$(CDK_SRC)/apps/misc/libs/libxmltree \
-I$(CDK_SRC)/apps/tuxbox/plugins/include \
-I$(CDK_SRC)/apps/tuxbox/enigma/src \
-I.
all: Test.so
Test.so: $(OBJECTS)
$(CXX) -shared -Wall -O2 -mcpu=823 -msoft-float -mmultiple -mstring -g -ggdb3 -pipe -o Test.so $(OBJECTS)
$(STRIP) --remove-section=.note --remove-section=.comment Test.so
.cpp.o:
$(CXX) $(CFLAGS) -c -o Test.o $<
clean:
rm -rf *.so *.o
Alles anzeigen
und ein keines Script mk
#! /bin/bash
echo
echo Building Plugin
echo
rm ./bin/Test.so
make clean
make all
/home/asterix/dreambox-cdk/root/cdk/powerpc-tuxbox-linux-gnu/bin/strip --remove-section=.note --remove-section=.comment Test.so
chmod 755 Test.so
cp ./Test.so ./bin
Alles anzeigen
was mir dann das Teil baut. Das Prog läuft auf der Box wie gewünscht.
Wenn ich aber Klassen in andere Files auslagen möchte und diese via #include im Code einbaue kompilert (und linkt?) zwar alles wie gewünscht, wenn ich das Teil aber auf der Box starte kommt: "Undefined symbol ...".
Also fehlt ihm die entsprechende lib (aus den ausgelagerten Klassen), bzw. sie wurde zuvor nicht gebaut?!
Wie konfiguriere ich solche Projekte richtig? Dafür gibts doch Tools/Befehle, oder nicht? Kann ich mein makefile modifizieren, so dass es auch mit mehreren Files klar kommt?
Ich komme aus der Windows-Entwickler-Welt und bin mit den LinuxDev-Gepflogenheiten leider nicht so vertraut ...