Antwort schreiben  Thema schreiben 
Verfasser Nachricht
mipez
Halbprofi
***


Beiträge: 190
Gruppe: User
Registriert seit: Dec 2010

Status: Offline
Danke erhalten: 88
Beitrag: #1
xPSP  .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

Code:
#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

Code:
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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
D3lta
Experte
****


Beiträge: 663
Gruppe: User
Registriert seit: Dec 2010

Status: Abwesend
Danke erhalten: 205
Beitrag: #2
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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
mipez
Halbprofi
***


Beiträge: 190
Gruppe: User
Registriert seit: Dec 2010

Status: Offline
Danke erhalten: 88
Beitrag: #3
xPSP  RE: .elf erstellen/verwenden

D3lta :
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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
D3lta
Experte
****


Beiträge: 663
Gruppe: User
Registriert seit: Dec 2010

Status: Abwesend
Danke erhalten: 205
Beitrag: #4
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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
mipez
Halbprofi
***


Beiträge: 190
Gruppe: User
Registriert seit: Dec 2010

Status: Offline
Danke erhalten: 88
Beitrag: #5
xPSP  RE: .elf erstellen/verwenden

Win, 64bit falls es wichtig is.

17.02.2011 16:21
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
D3lta
Experte
****


Beiträge: 663
Gruppe: User
Registriert seit: Dec 2010

Status: Abwesend
Danke erhalten: 205
Beitrag: #6
xPSP  RE: .elf erstellen/verwenden

Probiere es dann einmal mit meiner Basis-Makefile:

Code:
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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
mipez
Halbprofi
***


Beiträge: 190
Gruppe: User
Registriert seit: Dec 2010

Status: Offline
Danke erhalten: 88
Beitrag: #7
xPSP  RE: .elf erstellen/verwenden

Nope, klappt auch nicht. Selbiger Fehler wie vorher.

17.02.2011 16:28
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
HacKmaN
Ex-Developer
*


Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009

Status: Offline
Danke erhalten: 3319
Beitrag: #8
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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
D3lta
Experte
****


Beiträge: 663
Gruppe: User
Registriert seit: Dec 2010

Status: Abwesend
Danke erhalten: 205
Beitrag: #9
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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Ceikor
Ex-Developer
****


Beiträge: 581
Gruppe: User
Registriert seit: Dec 2008

Status: Abwesend
Danke erhalten: 701
Beitrag: #10
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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
mipez
Halbprofi
***


Beiträge: 190
Gruppe: User
Registriert seit: Dec 2010

Status: Offline
Danke erhalten: 88
Beitrag: #11
xPSP  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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
PSP_Lord
Durchstarter
**


Beiträge: 87
Gruppe: User
Registriert seit: Sep 2010

Status: Abwesend
Danke erhalten: 133
Beitrag: #12
xPSP  RE: .elf erstellen/verwenden

HacKmaN :
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:

Code:
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.


http://ps4dev.net.tc/ - the new german psp development site. Check it out!

Dieser Beitrag wurde zuletzt bearbeitet: 17.02.2011 22:17 von PSP_Lord.

17.02.2011 20:42
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Folgende User bedanken sich:
sankt_g. (Feb-17-2011)
HacKmaN
Ex-Developer
*


Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009

Status: Offline
Danke erhalten: 3319
Beitrag: #13
RE: .elf erstellen/verwenden

Von einer Shared ELF hab ich ehrlicherweiße noch nie was gehört Wink
Ich hab bis jetzt eigentlich nur mit Statischen (e_type == 2) und Relocate ELFs (e_type == 1) zu tun gehabt, von den anderen hab ich bis jetzt nichts gewusst Smile

Danke für den Hinweiß, ich werds mir merken Smile

17.02.2011 20:47
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
PSP_Lord
Durchstarter
**


Beiträge: 87
Gruppe: User
Registriert seit: Sep 2010

Status: Abwesend
Danke erhalten: 133
Beitrag: #14
RE: .elf erstellen/verwenden

Ich kann dir, wenn du willst, eines der ELF-Dokumente geben, die ich verwende.


http://ps4dev.net.tc/ - the new german psp development site. Check it out!

Dieser Beitrag wurde zuletzt bearbeitet: 17.02.2011 20:53 von PSP_Lord.

17.02.2011 20:53
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
HacKmaN
Ex-Developer
*


Beiträge: 2.423
Gruppe: User
Registriert seit: Oct 2009

Status: Offline
Danke erhalten: 3319
Beitrag: #15
xPSP  RE: .elf erstellen/verwenden

PSP_Lord :
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 Smile

17.02.2011 20:55
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Antwort schreiben  Thema schreiben 

Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
xGames [PGE] Lua, verschiedene texturen aus nur einem Bild verwenden AirMAX 3 3.201 10.10.2014 11:46
Letzter Beitrag: aron123
Smile Psp als Tacho verwenden ? BizzyTrip 6 2.801 17.09.2012 16:54
Letzter Beitrag: notepass
xPSP Patch erstellen? Kill Master 6 3.014 28.11.2011 12:27
Letzter Beitrag: dx3m
xPSP PSP-Firmwarefunktionen in HBs verwenden? vielesysteme 14 3.177 07.07.2011 20:16
Letzter Beitrag: vielesysteme
xPSP [Visual Studio 2010] C# eigene Buttons erstellen PhysXPSP 6 5.668 01.07.2011 13:56
Letzter Beitrag: PhysXPSP

Druckversion anzeigen
Thema einem Freund senden
Thema abonnieren | Thema zu den Favoriten hinzufügen




» zum Seitenanfang