|
Verfasser |
Nachricht |
mipez
Halbprofi
Beiträge: 190
Gruppe: User
Registriert seit: Dec 2010
Status:
Offline
Danke erhalten: 88
|
.elf erstellen/verwenden
Moin moin,
Ich hab mich eben durch diverse Tuts zum pspsdk gelesen.
So, das Kompilieren des Samples macht auch keine Probleme.
Wenn ich jedoch bspw. einen einfachen "Hello World" Code kompilieren will, erscheint nur dieser Fehler:
"make: *** No rule to make target `main.o', needed by `*targetname*.elf'. Stop."
*targetname* entspricht der Zeile in der makefile:
TARGET = *targetname*
Wie erstelle ich nun diese .elf oder brauch die am Ende vllt garnicht?
MfG. mipez
*EDIT*
Nur um mal den Source zu stellen:
main.h
#include <pspkernel.h>
#include <pspdebug.h>
PSP_MODULE_INFO("Hello World",0,1,1);
#define printf pspDebugScreenPrintf
/* Exit callback */
int exit_callback(int arg1, int arg2, void *common) {
sceKernelExitGame();
return 0;
}
/* Callback thread */
int CallbackThread(SceSize args, void *argp) {
int cbid;
cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL);
sceKernelRegisterExitCallback(cbid);
sceKernelSleepThreadCB();
return 0;
}
/* Sets up the callback thread and returns its thread id */
int SetupCallbacks(void) {
int thid = 0;
thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, 0, 0);
if(thid >= 0) {
sceKernelStartThread(thid, 0, 0);
}
return thid;
}
int main() {
pspDebugScreenInit();
SetupCallbacks();
printf("Hello World");
sceKernelSleepThread();
return 0;
}
makefile
TARGET = hello
OBJS = main.o
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Hello World
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak
Dieser Beitrag wurde zuletzt bearbeitet: 17.02.2011 16:08 von mipez.
|
|
17.02.2011 16:02 |
|
|
|
D3lta
Experte
Beiträge: 663
Gruppe: User
Registriert seit: Dec 2010
Status:
Abwesend
Danke erhalten: 205
|
RE: .elf erstellen/verwenden
Ich sehe den Source Code nicht!
Die .elf ist nur für den Compiler, eine Art zwischenstation.
Was für eine Dev-Umgebung nutzt du?
EDIT: hat sich erledigt
"Linux is like a tent, no windows, no gates and an apache inside."
Dieser Beitrag wurde zuletzt bearbeitet: 17.02.2011 16:10 von D3lta.
|
|
17.02.2011 16:07 |
|
|
|
mipez
Halbprofi
Beiträge: 190
Gruppe: User
Registriert seit: Dec 2010
Status:
Offline
Danke erhalten: 88
|
RE: .elf erstellen/verwenden
Ich sehe den Source Code nicht!
Die .elf ist nur für den Compiler, eine Art zwischenstation.
Was für eine Dev-Umgebung nutzt du?
EDIT: hat sich erledigt
Steht der EDIT zur letzten Frage?
Wenn nicht... ich nutze die Standartumgebung der pspsdk-Toolchain.
|
|
17.02.2011 16:14 |
|
|
|
D3lta
Experte
Beiträge: 663
Gruppe: User
Registriert seit: Dec 2010
Status:
Abwesend
Danke erhalten: 205
|
RE: .elf erstellen/verwenden
Sry wenn ich doof frage, für Win oder Lin(oder cygwin, is ja euch Lin)?
mfg D3lta
"Linux is like a tent, no windows, no gates and an apache inside."
|
|
17.02.2011 16:16 |
|
|
|
mipez
Halbprofi
Beiträge: 190
Gruppe: User
Registriert seit: Dec 2010
Status:
Offline
Danke erhalten: 88
|
RE: .elf erstellen/verwenden
Win, 64bit falls es wichtig is.
|
|
17.02.2011 16:21 |
|
|
|
D3lta
Experte
Beiträge: 663
Gruppe: User
Registriert seit: Dec 2010
Status:
Abwesend
Danke erhalten: 205
|
RE: .elf erstellen/verwenden
Probiere es dann einmal mit meiner Basis-Makefile:
TARGET = Name
OBJS = main.o
INCDIR =
CFLAGS = -O2 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
PSP_FW_VERSION=550
LIBDIR =
LDFLAGS =
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = Name_der_EBOOT
PSP_EBOOT_ICON =
PSP_EBOOT_PIC1 =
PSP_EBOOT_SND0 =
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak
mfg D3lta
"Linux is like a tent, no windows, no gates and an apache inside."
|
|
17.02.2011 16:27 |
|
|
|
mipez
Halbprofi
Beiträge: 190
Gruppe: User
Registriert seit: Dec 2010
Status:
Offline
Danke erhalten: 88
|
RE: .elf erstellen/verwenden
Nope, klappt auch nicht. Selbiger Fehler wie vorher.
|
|
17.02.2011 16:28 |
|
|
|
HacKmaN
Ex-Developer
Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009
Status:
Offline
Danke erhalten: 3319
|
RE: .elf erstellen/verwenden
main.c, nicht main.h :/
BTW, die ELF ist keine Zwischenstation für den Compiler, die ELF ist die eigentliche ausführbare Datei (das Format kommt von Unix, und wird gerne von Sony verwendet).
Diese wird in die PBP eingebettet, das Offset in der PBP wird im Header (Bytes 32 bis 35) gespeichert.
Es gibt 2 Arten von ELFs:
- Statische ELFs (diese benutzten feste Speicheradresse, und müsst deshalb immer von der selben Position im RAM geladen werden).
- Relocateable ELFs (aka PRXs, wenn die Relocation Symbole aufgelöst sind, können diese von jeder beliebigen Speicheradresse geladen werden).
mfg, HacKmaN
Dieser Beitrag wurde zuletzt bearbeitet: 17.02.2011 16:32 von HacKmaN.
|
|
17.02.2011 16:32 |
|
|
|
D3lta
Experte
Beiträge: 663
Gruppe: User
Registriert seit: Dec 2010
Status:
Abwesend
Danke erhalten: 205
|
RE: .elf erstellen/verwenden
nenne mal die main.h in main.c um.
mfg D3lta
"Linux is like a tent, no windows, no gates and an apache inside."
|
|
17.02.2011 16:34 |
|
|
|
Ceikor
Ex-Developer
Beiträge: 581
Gruppe: User
Registriert seit: Dec 2008
Status:
Abwesend
Danke erhalten: 701
|
RE: .elf erstellen/verwenden
Erledigt, aber warum wird das dennoch gespeichert obwohl ich auf abbrechen gegangen bin -.-
Dieser Beitrag wurde zuletzt bearbeitet: 17.02.2011 16:38 von Ceikor.
|
|
17.02.2011 16:35 |
|
|
|
mipez
Halbprofi
Beiträge: 190
Gruppe: User
Registriert seit: Dec 2010
Status:
Offline
Danke erhalten: 88
|
RE: .elf erstellen/verwenden
Alles klar, das Umbennen von .h zu .c hat geklappt.
Vielen Dank an alle.
Dieser Beitrag wurde zuletzt bearbeitet: 17.02.2011 16:39 von mipez.
|
|
17.02.2011 16:38 |
|
|
|
PSP_Lord
Durchstarter
Beiträge: 87
Gruppe: User
Registriert seit: Sep 2010
Status:
Abwesend
Danke erhalten: 133
|
RE: .elf erstellen/verwenden
main.c, nicht main.h :/
Es gibt 2 Arten von ELFs:
- Statische ELFs (diese benutzten feste Speicheradresse, und müsst deshalb immer von der selben Position im RAM geladen werden).
- Relocateable ELFs (aka PRXs, wenn die Relocation Symbole aufgelöst sind, können diese von jeder beliebigen Speicheradresse geladen werden).
mfg, HacKmaN
Nun ja, soweit ich weiß, gibt es mindestens 3 verschiedene ELF Typen:
Typ 1: relocatable ELF - hält wichtigen code, der als Anleitung zum linken mit anderen Objekt Dateien verwendet wird, um eine ausfürbare oder shared Datei zu erzeugen
Typ 2: executable ELF - legt fest, wie ein ausfürbares Program gestartet werden soll (über den ELF struct member "exec")
Typ 3: shared object ELF - enthält code für das linken in zwei unterschiedlichen Kontexten. Der "link editor" (1. Kontext) kann die Datei entweder mit einem relocatablen file oder einem andere shared object file linken, um eine neues object file zu erstellen. Der "dynamische linker" wiederum kann die Datei mit einem executablen file linken oder aber mit einem anderen shared object file, um ein Prozess Abbild zu erzeugen.
Wenn wir uns jetzt sogar die Definiton des ELF header members "e_type" anschauen, stellen wir fest:
Name_ _______Value_ _______________Meaning_____
ET_NONE 0 No file type
ET_REL 1 Relocatable file
ET_EXEC 2 Executable file
ET_DYN 3 Shared object file
ET_CORE 4 Core file
ET_LOPROC 0xff00 Processor-specific
ET_HIPROC 0xffff Processor-specific _
_______________________________________
Es gibt noch 3 weitere mögliche ELF types, wobei die von mir und HacKmaN dargestellten Typen die wichtigsten sind.
Der Inhalt von "Core file" ist zum Beispiel unbestimmt, während "ET_LOPRPC" und "ET_HIPROC" für Prozessor spezifische Semantiks reserviert sind.
Dieser Beitrag wurde zuletzt bearbeitet: 17.02.2011 22:17 von PSP_Lord.
|
|
17.02.2011 20:42 |
|
Folgende User bedanken sich: |
|
HacKmaN
Ex-Developer
Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009
Status:
Offline
Danke erhalten: 3319
|
RE: .elf erstellen/verwenden
|
|
17.02.2011 20:47 |
|
|
|
PSP_Lord
Durchstarter
Beiträge: 87
Gruppe: User
Registriert seit: Sep 2010
Status:
Abwesend
Danke erhalten: 133
|
RE: .elf erstellen/verwenden
Ich kann dir, wenn du willst, eines der ELF-Dokumente geben, die ich verwende.
Dieser Beitrag wurde zuletzt bearbeitet: 17.02.2011 20:53 von PSP_Lord.
|
|
17.02.2011 20:53 |
|
|
|
HacKmaN
Ex-Developer
Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009
Status:
Offline
Danke erhalten: 3319
|
RE: .elf erstellen/verwenden
Ich kann dir, wenn du willst, eines der ELF-Dokumente geben, die ich verwende.
Schick mir mal bitte nen Link, das würd mich interessieren
|
|
17.02.2011 20:55 |
|
|
|