|
Verfasser |
Nachricht |
uPSP_08
Experte
Beiträge: 677
Gruppe: User
Registriert seit: May 2008
Status:
Offline
Danke erhalten: 217
|
C Hilfe: No rule to make target...
Hallo liebe C Experten!
Ich bin gerade dabei, mich in C für die PSP einzuarbeiten.
Ich benutze Ceikors PSP-SDK 1.0, also wohl ein erweitertes MINPSPW, Notepad++ und kompiliere über cmd.
Nun ja, Variablen, Funktionen, Schleifen, if-Abfragen beherrsche ich, ist nichts neues für mich. Hello World hat auch problemlos geklappt.
Nun wollte ich mich an die Umsetzung eines einfachen Menüs nach dem Tutorial auf psp-prgramming bzw. qj.net machen, da da Textausgabe mit genauer Position dabei ist (also nicht nur die Debug-Textausgabe).
Dafür muss man ja nun die graphics.h mit einbinden.
Ich habe also, nachdem das Compilen nicht klappte, einfach alles aus dem Tut reinkopiert, doch es kommt derselbe Fehler:
make: *** No rule to make target `graphics.o', needed by `hello.elf'. Stop.
Hier mal die main.c:
#include <pspkernel.h>
#include <pspcallbacks.h>
#include <pspctrl.h>
#include "graphics.h"
#define RGB(r, g, b) ((r)|((g)<<8)|((b)<<16))
PSP_MODULE_INFO("Menu Example",0,1,1);
Color white = RGB(255,255,255);
Color red = RGB(255,0,0);
Color black = RGB(0,0,0);
char menuItems[10][25] = {
{"Item 0"},
{"Start"},
{"Options"},
{"Item 2"},
{"Controls"},
{"Online Play"},
{"Item 6"},
{"Item 7"},
{"Credits"},
{"Exit"},
};
int timer,select,foo;
SceCtrlData pad;
int main() {
initGraphics();
SetupCallbacks();
while(1) {
sceCtrlReadBufferPositive(&pad,1);
fillScreenRect(white,0,0,480,272);
timer++;
for(foo=0;foo<10;foo++) {
printTextScreen(200,foo*10+70,menuItems[foo],black);
}
printTextScreen(200,select*10+70,menuItems[select],red);
if((pad.Buttons & PSP_CTRL_UP) && (timer > 10) && (select > 0)) {
select--;
timer = 0;
} else if ((pad.Buttons & PSP_CTRL_DOWN) && (timer > 10) && (select < 9)) {
select++;
timer = 0;
}
flipScreen();
}
return 0;
}
Und die Makefile:
TARGET = menu
OBJS = main.o graphics.o framebuffer.o
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
LIBS = -lpspgu -lpng -lz -lm
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Menu
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak
Vielleicht könntet ihr mir bei der Gelegenheit auch kurz erklären, warum man, wenn man die graphics.h (und damit auch die framebuffer) einbindet, die Objekte in der Makefile hinzufügen muss (also z.B. graphics.o, da ist ja iwo der Fehler)? Wenn ich die pspdebug.h einbinde, ist das doch auch nicht nötig?
Danke schonmal!
MfG
uPSP_08
Dieser Beitrag wurde zuletzt bearbeitet: 28.01.2011 17:50 von uPSP_08.
|
|
27.01.2011 22:44 |
|
|
|
Ceikor
Ex-Developer
Beiträge: 581
Gruppe: User
Registriert seit: Dec 2008
Status:
Abwesend
Danke erhalten: 701
|
RE: C Hilfe: No rule to make target...
Weil zur grafics.h auch eine grafics.c gehört und aus dem grund gehört die dort rein.
Dieser Beitrag wurde zuletzt bearbeitet: 28.01.2011 07:40 von Ceikor.
|
|
27.01.2011 23:05 |
|
Folgende User bedanken sich: |
|
HacKmaN
Ex-Developer
Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009
Status:
Offline
Danke erhalten: 3319
|
RE: C Hilfe: No rule to make target...
OBJS = main.o graphics.o framebuffer.o
Wie Ceikor schon sagte fehlt hier die graphics.c.
Dieser Beitrag wurde zuletzt bearbeitet: 28.01.2011 14:21 von HacKmaN.
|
|
28.01.2011 14:21 |
|
Folgende User bedanken sich: |
|
uPSP_08
Experte
Beiträge: 677
Gruppe: User
Registriert seit: May 2008
Status:
Offline
Danke erhalten: 217
|
RE: C Hilfe: No rule to make target...
Ah ok, weil die graphics.c dazu gehört.
Aber warum kann ich die .h nicht einfach mit
#include <graphics.h>
einbinden statt mit "" (wobei ich sie ins selbe Verzeichnis kopieren muss), die liegt doch genau so im include-Verzeichnis wie z.B. die pspdebug.h, die ich auch über die eckigen Klammern include? Genau dann kommt nämlich der oben genannte Fehler.
Wenn ichs mit "" mach und die graphics und framebuffer ins selbe Verzeichnis tue, kommt auch eine Fehlermeldung:
psp-gcc -I. -Ic:/pspsdk/psp/sdk/include -O2 -G0 -Wall -D_PSP_FW_VERSION=150 -c
-o graphics.o graphics.c
In file included from c:/pspsdk/lib/gcc/../../psp/include/pngconf.h:243,
from c:/pspsdk/lib/gcc/../../psp/include/png.h:363,
from graphics.c:5:
c:/pspsdk/psp/sdk/include/stdio.h:29: error: static declaration of 'close' follo
ws non-static declaration
c:/pspsdk/lib/gcc/../../psp/include/sys/unistd.h:29: error: previous declaration
of 'close' was here
c:/pspsdk/psp/sdk/include/stdio.h:30: error: static declaration of 'read' follow
s non-static declaration
c:/pspsdk/lib/gcc/../../psp/include/sys/unistd.h:130: error: previous declaratio
n of 'read' was here
c:/pspsdk/psp/sdk/include/stdio.h:31: error: static declaration of 'write' follo
ws non-static declaration
c:/pspsdk/lib/gcc/../../psp/include/sys/unistd.h:175: error: previous declaratio
n of 'write' was here
c:/pspsdk/psp/sdk/include/stdio.h:32: error: static declaration of 'lseek' follo
ws non-static declaration
c:/pspsdk/lib/gcc/../../psp/include/sys/unistd.h:113: error: previous declaratio
n of 'lseek' was here
make: *** [graphics.o] Error 1
Worauf die Meldung verweist, sind doch Dateien, die von der u.a. von der graphics.c eingebunden werden. An denen hab ich doch gar nix verändert...
Dieser Beitrag wurde zuletzt bearbeitet: 28.01.2011 18:02 von uPSP_08.
|
|
28.01.2011 18:00 |
|
|
|
uPSP_08
Experte
Beiträge: 677
Gruppe: User
Registriert seit: May 2008
Status:
Offline
Danke erhalten: 217
|
RE: C Hilfe: No rule to make target...
Also ich werd hier einfach nicht schlau draus.
Bin ich jetzt total blöd!?
Ich hab das PSP-SDK 1.0 mal deinstalliert und MinPSPGW installiert, mit dem kommt dieser Fehler nicht (dafür ein anderer, aber ok...). Dann hab ich MinPSPGW wieder deinstalliert und wieder Ceikors PSP-SDK 1.0 installiert, und es kam wieder der Fehler von oben. Also muss es doch am SDK liegen, oder? Zumal ich doch den Sourcecode einfach nur aus dem Tutorial kopiert hab.
Wäre für eine Lösung des Problems und der oben gestellten Frage sehr dankbar.
greez
|
|
01.02.2011 20:13 |
|
|
|
atze96
Legende
Beiträge: 1.584
Gruppe: User
Registriert seit: Oct 2010
Status:
Offline
Danke erhalten: 434
|
RE: C Hilfe: No rule to make target...
Kann es sein das die makefile nicht im Ordner ist?
Das ist nämlich bei mit mal das prob gewesen
|
|
01.02.2011 20:15 |
|
|
|
uPSP_08
Experte
Beiträge: 677
Gruppe: User
Registriert seit: May 2008
Status:
Offline
Danke erhalten: 217
|
RE: C Hilfe: No rule to make target...
Nene, die ist schon drin.
|
|
01.02.2011 20:20 |
|
|
|
HacKmaN
Ex-Developer
Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009
Status:
Offline
Danke erhalten: 3319
|
RE: C Hilfe: No rule to make target...
|
|
01.02.2011 21:28 |
|
Folgende User bedanken sich: |
|
uPSP_08
Experte
Beiträge: 677
Gruppe: User
Registriert seit: May 2008
Status:
Offline
Danke erhalten: 217
|
RE: C Hilfe: No rule to make target...
Ist doch kein Problem, danke, dass du nochmal geantwortet hast.
Aber so ganz gelöst ist es ja noch nicht. Heißt das also, dass ich das PSP-SDK 1.0 nicht nehmen sollte? Lieber MinPSPGW oder doch gleich am besten unter Linux alles einrichten?
Und warum kann ich nochmal die graphics.h nicht über
#include <graphics.h>
einbinden, obwohl sie im include-Verzeichnis liegt?
|
|
03.02.2011 18:12 |
|
|
|