Wii-Programmierung: "DI_Eject" nicht gefunden

      Wii-Programmierung: "DI_Eject" nicht gefunden

      Hallo zusammen,

      ich wollte anfangen, eigene Gecko-Cheatcodes zu schreiben, in die selbst geschriebener C-Code einkompiliert wird, damit ich kein Assembler benutzen muss.

      Dazu habe ich mir ein "Grundgerüst" im Internet gesucht (Linux-Code, der mir einen C-Code für PPC kompiliert und in einen Gecko-Cheatcode einbettet).

      Der Code in meiner "test.c" sieht dann folgendermaßen aus:

      C-Quellcode

      1. #include <stdio.h>
      2. #include <stdlib.h>
      3. #include <string.h>
      4. #include <malloc.h>
      5. #include </opt/devkitpro/libogc/include/ogcsys.h>
      6. #include </opt/devkitpro/libogc/include/gccore.h>
      7. #include </opt/devkitpro/libogc/include/network.h>
      8. #include </opt/devkitpro/libogc/include/debug.h>
      9. #include <errno.h>
      10. #include </opt/devkitpro/libogc/include/di/di.h>
      11. void _start()
      12. {
      13. DI_Eject();
      14. }
      Alles anzeigen

      (Die absoluten Pfade musste ich nehmen, weil er sonst nix gefunden hat. Auch wenn "/opt/devkitpro/libogc/include" in $PATH liegt. Evtl. weiß ja auch jemand, wodran das liegt?).

      Der Compiler meint aber, er findet "DI_Eject()" nicht, obwohl das in der di.h definiert ist ...

      Quellcode

      1. $ powerpc-eabi-gcc -nostartfiles -nostdlib -Os -s test.c
      2. /tmp/ccalcIbF.o: In function `_start':
      3. test.c:(.text+0xc): undefined reference to `DI_Eject'
      4. collect2: error: ld returned 1 exit status

      Hat jemand ne Idee, warum?

      Mein eigentliches Ziel war, mit dem C-Code Daten an einen Server im Internet zu schicken. Aber wenn ich bereits an einem simplen Funktionsaufruf zum DVD auswerfen scheitere ...

      Leseratte

      DevkitPro Archiv (alte Versionen / old versions): wii.leseratte10.de/devkitPro/
      Want to donate for Wiimmfi and Wii-Homebrew.com? Patreon / PayPal

      Dieser Beitrag wurde bereits 0 mal editiert, zuletzt von Leseratte ()

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Leseratte ()

      Das bedeutet, der Compiler hat die Implementierung von DI_Eject() nicht gefunden. Vmtl musst du die Lib im makefile angeben.

      mfg

      Meine :Smiley_v3_Nintendo_Wii: : 3.4 -> 3.2 -> 4.2, cIOS rev 19, USBLoader gx, DVDx, Softchip r90 und Bootmii! :Smiley_v3_Wii_Remote: x2, :Smiley_v3_Wii_Nunchuck: x 2
      Meine :Smiley_v3_Nintendo_GameCube: : :Smiley_v3_GCN_Wavebird_Controller: x 3
      Mein :Smilie_v2_Nintendo_DS: : R4, R4i


      Zockst du CoD: Modern Warfare Reflex oder WaW? Dann PN an mich!!

      Und welche wäre das?

      Ein Makefile nutze ich imMoment nicht, müsste ich mir dann komplett selber erstellen. Ich kompiliere im Moment einfach nur mit `powerpc-eabi-gcc -nostartfiles -nostdlib -Os -s test.c`
      Reicht denn nicht das #include mit Pfad zur di.h, wo die Funktion definiert ist?

      DevkitPro Archiv (alte Versionen / old versions): wii.leseratte10.de/devkitPro/
      Want to donate for Wiimmfi and Wii-Homebrew.com? Patreon / PayPal

      Dieser Beitrag wurde bereits 0 mal editiert, zuletzt von Leseratte ()

      Leseratte schrieb:

      (Die absoluten Pfade musste ich nehmen, weil er sonst nix gefunden hat. Auch wenn "/opt/devkitpro/libogc/include" in $PATH liegt. Evtl. weiß ja auch jemand, wodran das liegt?).

      für Make: VPATH += ./subdir
      für die Compiler: -I./subdir

      WIT: Wiimms ISO Tools
      Verwaltet Plain ISO, WDF, WIA, CISO, WBFS, FST: kann Extrahieren, Erstellen, Patchen, Mischen und Überprüfen

      SZS: Wiimms SZS Tools
      Verwaltet SZS-, BRRES-, U8-, BMG-, BREFT-Dateien uvm.



      PN ohne persönlichen Charakter werden ignoriert. Support-Anfragen gehören ins Forum.

      Leseratte schrieb:

      Und welche wäre das?
      libdi.a


      Leseratte schrieb:

      Reicht denn nicht das #include mit Pfad zur di.h, wo die Funktion definiert ist?
      Nein. Im Header ist nur der Prototyp der Funktion. Die Funktion ist in der Source-Datei oder in einer Lib.

      Header = Straßenschild
      Lib = dazugehörige Ort

      Wenn es denn Ort(Source) nicht gibt, kannst du ihn selbst mit Straßenschild(Header) nicht finden.

      mfg

      Meine :Smiley_v3_Nintendo_Wii: : 3.4 -> 3.2 -> 4.2, cIOS rev 19, USBLoader gx, DVDx, Softchip r90 und Bootmii! :Smiley_v3_Wii_Remote: x2, :Smiley_v3_Wii_Nunchuck: x 2
      Meine :Smiley_v3_Nintendo_GameCube: : :Smiley_v3_GCN_Wavebird_Controller: x 3
      Mein :Smilie_v2_Nintendo_DS: : R4, R4i


      Zockst du CoD: Modern Warfare Reflex oder WaW? Dann PN an mich!!

      Ich würde nicht unbedingt absolute Pfade als Includes verwenden, um portabel zu sein. DevkitPro an sich sollte an die Umgebungsvariable DEVKITPRO gebunden werden, da darauf die meisten Makefiles für GameCube/Wii/DS abzielen.

      Quellcode

      1. $ powerpc-eabi-gcc -nostartfiles -nostdlib -Os -s -I$DEVKITPRO/devkitPPC/include -L$DEVKITPRO/devkitPPC/lib -I$DEVKITPRO/libogc/include -L$DEVKITPRO/libogc/lib -logc -ldi test.c


      EigenschaftWert
      Modell:PlayStation Vita Slim, WiFi, schwarz, PCH-2016
      System-Software:3.63
      Modell:PlayStation TV
      System-Software:3.63, Whitelist Database modified
      Software:7 Vita Cartridges, 9 Titel als PSN-Download (Stand: 10. November 2016)
      Currently playing:Akiba's Trip 2: Undead & Undressed (+ DLC)


      EigenschaftWert
      Modell:PlayStation 4 Slim, 1 TB, CUH-2016B
      System-Software:4.06
      Software:1 PS4-Disk, 3 PSN-Downloads (Stand: 22. Dezember 2016)
      Currently playing:Megadimension Neptunia VII (+ DLC)
      Backlog:Deponia, Fairy Fencer F: Advent Dark Force, Sword Art Online: Hollow Realization

      EigenschaftWert
      Modell:Nintendo 3DS XL Yoshi Special Edition (grün-weiß)
      System-Software:10.1.0-27E
      Software:5 Titel als 3DS-Cartridge, 8 3DS-Titel als Download, 4 Virtual-Console-Titel (Stand: 18. Oktober 2015)
      Flashkarten:SuperCard DSTWO (wird nicht im 3DS benutzt)
      Currently playing:Hatsune Miku: Project Mirai DX / Pokémon: Omega Rubin / Cave Story + (3DSWare)

      EigenschaftWert
      Modell:Nintendo GameCube PAL Silber
      Revision:DOL-001
      Zubehör:2 Controller (Purple + Silber, kabelgeb.), 1 MemoryCard (128 MB, BigBen Interactive), 1 Game Boy Player, Nintendo MultiAV-Kabel, RGB-Kabel
      Spiele:12
      Sonstiges:SD Media Launcher

      EigenschaftWert
      Modell:Nintendo Wii Weiß
      Systemmenü:4.1E
      Boot Loader:Fixed Boot Loader (boot1c) / Standard Boot Loader boot2 v4
      BootMii:IOS
      Priiloader:v0.4 rev80 DE
      HBC:1.1.2
      cIOS + MIOS:IOS222 (hermes v4), IOS249[38] rev19 / cMIOS v10 with integrated GameCube Backup Launcher v0.2
      USB Loader + Storage:USB Loader GX (1.0.x), uLoader 5.1, cfg USB Loader, Neogamma / ohne



      Das passt irgendwie auch nicht. Nehme ich den Befehl so, wie du ihn gepostet hast, findet er -ldi und -logc gar nicht, denn die liege in $DEVKITPRO/libogc/lib/wii/ und nicht in $DEVKITPRO/libogc/lib/, und wenn ich noch ein "-L$DEVKITPRO/libogc/lib/wii" hinzufüge, verschwindet zwar der Fehler, dafür tauchen tausende neue auf.

      Quellcode

      1. $ powerpc-eabi-gcc -nostartfiles -nostdlib -Os -s -I$DEVKITPRO/devkitPPC/include -L$DEVKITPRO/devkitPPC/lib -I$DEVKITPRO/libogc/include -L$DEVKITPRO/libogc/lib -L$DEVKITPRO/libogc/lib/wii -logc -ldi nossl.c
      2. /tmp/cc4myO4u.o: In function `_start':
      3. nossl.c:(.text+0x0): multiple definition of `_start'
      4. /opt/devkitpro/libogc/lib/wii/libogc.a(ogc_crt0.o):(.init+0x0): first defined here
      5. /opt/devkitpro/libogc/lib/wii/libogc.a(ogc_crt0.o): In function `startup':
      6. (.init+0x36): undefined reference to `__isIPL'
      7. /opt/devkitpro/libogc/lib/wii/libogc.a(ogc_crt0.o): In function `startup':
      8. (.init+0x3a): undefined reference to `__isIPL'
      9. /opt/devkitpro/libogc/lib/wii/libogc.a(ogc_crt0.o): In function `startup':
      10. (.init+0x6e): undefined reference to `__bss_end'
      11. /opt/devkitpro/libogc/lib/wii/libogc.a(ogc_crt0.o): In function `startup':
      12. (.init+0x72): undefined reference to `__bss_end'
      13. /opt/devkitpro/libogc/lib/wii/libogc.a(argv.o): In function `__CheckARGV':
      14. /Users/davem/projects/devkitpro/libogc/libogc/argv.c:42: undefined reference to `__Arena1Lo'
      15. /Users/davem/projects/devkitpro/libogc/libogc/argv.c:42: undefined reference to `__Arena1Lo'
      16. /Users/davem/projects/devkitpro/libogc/libogc/argv.c:44: undefined reference to `memmove'
      17. /Users/davem/projects/devkitpro/libogc/libogc/argv.c:46: undefined reference to `build_argv'
      18. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `__call_resetfuncs':
      19. /Users/davem/projects/devkitpro/libogc/libogc/system.c:375: undefined reference to `_restgpr_28_x'
      20. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `__getrtc':
      21. /Users/davem/projects/devkitpro/libogc/libogc/system.c:598: undefined reference to `_restgpr_30_x'
      22. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `__sram_write':
      23. /Users/davem/projects/devkitpro/libogc/libogc/system.c:645: undefined reference to `_restgpr_29_x'
      24. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `__sram_writecallback':
      25. /Users/davem/projects/devkitpro/libogc/libogc/system.c:653: undefined reference to `_restgpr_31_x'
      26. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `__unlocksram':
      27. /Users/davem/projects/devkitpro/libogc/libogc/system.c:717: undefined reference to `_restgpr_31_x'
      28. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `__sys_alarmhandler':
      29. /Users/davem/projects/devkitpro/libogc/libogc/system.c:345: undefined reference to `_restgpr_30_x'
      30. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `__sram_init':
      31. /Users/davem/projects/devkitpro/libogc/libogc/system.c:667: undefined reference to `_restgpr_30_x'
      32. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `__SYS_ReadROM':
      33. /Users/davem/projects/devkitpro/libogc/libogc/system.c:919: undefined reference to `_restgpr_26_x'
      34. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `__SYS_GetRTC':
      35. /Users/davem/projects/devkitpro/libogc/libogc/system.c:939: undefined reference to `_restgpr_29_x'
      36. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `__SYS_SetTime':
      37. /Users/davem/projects/devkitpro/libogc/libogc/system.c:955: undefined reference to `_restgpr_29_x'
      38. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `__SYS_GetSystemTime':
      39. /Users/davem/projects/devkitpro/libogc/libogc/system.c:968: undefined reference to `_restgpr_31_x'
      40. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `__SYS_DoPowerCB':
      41. /Users/davem/projects/devkitpro/libogc/libogc/system.c:1021: undefined reference to `_restgpr_31_x'
      42. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `__STMEventHandler':
      43. /Users/davem/projects/devkitpro/libogc/libogc/system.c:450: undefined reference to `_restgpr_31_x'
      44. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `SYS_ResetSystem':
      45. /Users/davem/projects/devkitpro/libogc/libogc/system.c:1221: undefined reference to `memset'
      46. /Users/davem/projects/devkitpro/libogc/libogc/system.c:1222: undefined reference to `memset'
      47. /Users/davem/projects/devkitpro/libogc/libogc/system.c:1224: undefined reference to `memset'
      48. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `SYS_AllocArena1MemLo':
      49. /Users/davem/projects/devkitpro/libogc/libogc/system.c:1322: undefined reference to `_restgpr_29_x'
      50. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `__lowmem_init':
      51. /Users/davem/projects/devkitpro/libogc/libogc/system.c:468: undefined reference to `__gxregs'
      52. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `__init_syscall_array':
      53. /Users/davem/projects/devkitpro/libogc/libogc/system.c:296: undefined reference to `__syscalls'
      54. /Users/davem/projects/devkitpro/libogc/libogc/system.c:296: undefined reference to `__syscalls'
      55. /Users/davem/projects/devkitpro/libogc/libogc/system.c:296: undefined reference to `__syscalls'
      56. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `__lowmem_init':
      57. /Users/davem/projects/devkitpro/libogc/libogc/system.c:468: undefined reference to `__gxregs'
      58. /Users/davem/projects/devkitpro/libogc/libogc/system.c:468: undefined reference to `memset'
      59. /Users/davem/projects/devkitpro/libogc/libogc/system.c:469: undefined reference to `memset'
      60. /Users/davem/projects/devkitpro/libogc/libogc/system.c:470: undefined reference to `__Arena1Lo'
      61. /Users/davem/projects/devkitpro/libogc/libogc/system.c:470: undefined reference to `__Arena1Lo'
      62. /Users/davem/projects/devkitpro/libogc/libogc/system.c:472: undefined reference to `__Arena1Hi'
      63. /Users/davem/projects/devkitpro/libogc/libogc/system.c:472: undefined reference to `__Arena1Hi'
      64. /Users/davem/projects/devkitpro/libogc/libogc/system.c:502: undefined reference to `__Arena2Lo'
      65. /Users/davem/projects/devkitpro/libogc/libogc/system.c:502: undefined reference to `__Arena2Lo'
      66. /Users/davem/projects/devkitpro/libogc/libogc/system.c:503: undefined reference to `__Arena2Hi'
      67. /Users/davem/projects/devkitpro/libogc/libogc/system.c:503: undefined reference to `__Arena2Hi'
      68. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `__ipcbuffer_init':
      69. /Users/davem/projects/devkitpro/libogc/libogc/system.c:510: undefined reference to `__ipcbufferLo'
      70. /Users/davem/projects/devkitpro/libogc/libogc/system.c:510: undefined reference to `__ipcbufferLo'
      71. /Users/davem/projects/devkitpro/libogc/libogc/system.c:511: undefined reference to `__ipcbufferHi'
      72. /Users/davem/projects/devkitpro/libogc/libogc/system.c:511: undefined reference to `__ipcbufferHi'
      73. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `__dsp_bootstrap':
      74. /Users/davem/projects/devkitpro/libogc/libogc/system.c:765: undefined reference to `memcpy'
      75. /Users/davem/projects/devkitpro/libogc/libogc/system.c:766: undefined reference to `memcpy'
      76. /Users/davem/projects/devkitpro/libogc/libogc/system.c:808: undefined reference to `memcpy'
      77. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `SYS_Init':
      78. /Users/davem/projects/devkitpro/libogc/libogc/system.c:1096: undefined reference to `_restgpr_29_x'
      79. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `SYS_AllocArena2MemLo':
      80. /Users/davem/projects/devkitpro/libogc/libogc/system.c:1389: undefined reference to `_restgpr_29_x'
      81. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `SYS_ProtectRange':
      82. /Users/davem/projects/devkitpro/libogc/libogc/system.c:1418: undefined reference to `_restgpr_26_x'
      83. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `SYS_AllocateFramebuffer':
      84. /Users/davem/projects/devkitpro/libogc/libogc/system.c:1422: undefined reference to `memalign'
      85. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `__SYS_LoadFont':
      86. /Users/davem/projects/devkitpro/libogc/libogc/system.c:992: undefined reference to `_restgpr_28_x'
      87. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `SYS_InitFont':
      88. /Users/davem/projects/devkitpro/libogc/libogc/system.c:1445: undefined reference to `memset'
      89. /Users/davem/projects/devkitpro/libogc/libogc/system.c:1448: undefined reference to `memset'
      90. /Users/davem/projects/devkitpro/libogc/libogc/system.c:1459: undefined reference to `_restgpr_31_x'
      91. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `SYS_CreateAlarm':
      92. /Users/davem/projects/devkitpro/libogc/libogc/system.c:1538: undefined reference to `_restgpr_30_x'
      93. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `__lwp_wd_calc_ticks':
      94. /Users/davem/projects/devkitpro/libogc/libogc/lwp_watchdog.inl:52: undefined reference to `__udivdi3'
      95. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `SYS_SetAlarm':
      96. /Users/davem/projects/devkitpro/libogc/libogc/system.c:1558: undefined reference to `_restgpr_27_x'
      97. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `__lwp_wd_calc_ticks':
      98. /Users/davem/projects/devkitpro/libogc/libogc/lwp_watchdog.inl:52: undefined reference to `__udivdi3'
      99. /Users/davem/projects/devkitpro/libogc/libogc/lwp_watchdog.inl:52: undefined reference to `__udivdi3'
      100. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `SYS_SetPeriodicAlarm':
      101. /Users/davem/projects/devkitpro/libogc/libogc/system.c:1578: undefined reference to `_restgpr_21_x'
      102. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `SYS_RemoveAlarm':
      103. /Users/davem/projects/devkitpro/libogc/libogc/system.c:1596: undefined reference to `_restgpr_30_x'
      104. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `SYS_DumpPMC':
      105. /Users/davem/projects/devkitpro/libogc/libogc/system.c:1670: undefined reference to `printf'
      106. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `SYS_GetWirelessID':
      107. /Users/davem/projects/devkitpro/libogc/libogc/system.c:1697: undefined reference to `_restgpr_31_x'
      108. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o): In function `SYS_GetHollywoodRevision':
      109. /Users/davem/projects/devkitpro/libogc/libogc/system.c:1706: undefined reference to `_restgpr_31_x'
      110. /opt/devkitpro/libogc/lib/wii/libogc.a(system.o):(.sdata2.__sys_inIPL+0x0): undefined reference to `__isIPL'
      111. /opt/devkitpro/libogc/lib/wii/libogc.a(cond.o): In function `__lwp_cond_waitsupp':
      112. /Users/davem/projects/devkitpro/libogc/libogc/cond.c:129: undefined reference to `_restgpr_27_x'
      113. /opt/devkitpro/libogc/lib/wii/libogc.a(cond.o): In function `LWP_CondInit':
      114. /Users/davem/projects/devkitpro/libogc/libogc/cond.c:163: undefined reference to `_restgpr_29_x'
      115. /opt/devkitpro/libogc/lib/wii/libogc.a(cond.o): In function `LWP_CondSignal':
      116. /Users/davem/projects/devkitpro/libogc/libogc/cond.c:173: undefined reference to `_restgpr_31_x'
      117. /opt/devkitpro/libogc/lib/wii/libogc.a(cond.o): In function `LWP_CondBroadcast':
      118. /Users/davem/projects/devkitpro/libogc/libogc/cond.c:178: undefined reference to `_restgpr_30_x'
      119. /opt/devkitpro/libogc/lib/wii/libogc.a(cond.o): In function `__lwp_wd_calc_ticks':
      120. /Users/davem/projects/devkitpro/libogc/libogc/lwp_watchdog.inl:52: undefined reference to `__udivdi3'
      121. /opt/devkitpro/libogc/lib/wii/libogc.a(cond.o): In function `LWP_CondDestroy':
      122. /Users/davem/projects/devkitpro/libogc/libogc/cond.c:204: undefined reference to `_restgpr_30_x'
      123. /opt/devkitpro/libogc/lib/wii/libogc.a(message.o): In function `MQ_Init':
      124. /Users/davem/projects/devkitpro/libogc/libogc/message.c:106: undefined reference to `_restgpr_28_x'
      125. /opt/devkitpro/libogc/lib/wii/libogc.a(message.o): In function `MQ_Close':
      126. /Users/davem/projects/devkitpro/libogc/libogc/message.c:119: undefined reference to `_restgpr_31_x'
      127. /opt/devkitpro/libogc/lib/wii/libogc.a(message.o): In function `MQ_Send':
      128. /Users/davem/projects/devkitpro/libogc/libogc/message.c:135: undefined reference to `_restgpr_31_x'
      129. /opt/devkitpro/libogc/lib/wii/libogc.a(message.o): In function `MQ_Receive':
      130. /Users/davem/projects/devkitpro/libogc/libogc/message.c:151: undefined reference to `_restgpr_30_x'
      131. /opt/devkitpro/libogc/lib/wii/libogc.a(message.o): In function `MQ_Jam':
      132. /Users/davem/projects/devkitpro/libogc/libogc/message.c:167: undefined reference to `_restgpr_31_x'
      133. /opt/devkitpro/libogc/lib/wii/libogc.a(si.o): In function `__si_alarmhandler':
      134. /Users/davem/projects/devkitpro/libogc/libogc/si.c:164: undefined reference to `_restgpr_30_x'
      135. /opt/devkitpro/libogc/lib/wii/libogc.a(si.o): In function `__si_calltypandstatuscallback':
      136. /Users/davem/projects/devkitpro/libogc/libogc/si.c:269: undefined reference to `_restgpr_27_x'
      137. /opt/devkitpro/libogc/lib/wii/libogc.a(si.o): In function `__si_completetransfer':
      138. /Users/davem/projects/devkitpro/libogc/libogc/si.c:202: undefined reference to `_restgpr_28_x'
      139. /opt/devkitpro/libogc/lib/wii/libogc.a(si.o): In function `__si_transfernext':
      140. /Users/davem/projects/devkitpro/libogc/libogc/si.c:354: undefined reference to `_restgpr_25_x'
      141. /opt/devkitpro/libogc/lib/wii/libogc.a(si.o): In function `SI_Sync':
      142. /Users/davem/projects/devkitpro/libogc/libogc/si.c:423: undefined reference to `_restgpr_30_x'
      143. /opt/devkitpro/libogc/lib/wii/libogc.a(si.o): In function `SI_SetSamplingRate':
      144. /Users/davem/projects/devkitpro/libogc/libogc/si.c:502: undefined reference to `_restgpr_30_x'
      145. /opt/devkitpro/libogc/lib/wii/libogc.a(si.o): In function `SI_GetResponseRaw':
      146. /Users/davem/projects/devkitpro/libogc/libogc/si.c:535: undefined reference to `_restgpr_31_x'
      147. /opt/devkitpro/libogc/lib/wii/libogc.a(si.o): In function `SI_GetResponse':
      148. /Users/davem/projects/devkitpro/libogc/libogc/si.c:553: undefined reference to `_restgpr_29_x'
      149. /opt/devkitpro/libogc/lib/wii/libogc.a(si.o): In function `SI_Transfer':
      150. /Users/davem/projects/devkitpro/libogc/libogc/si.c:583: undefined reference to `__udivdi3'
      151. /Users/davem/projects/devkitpro/libogc/libogc/si.c:602: undefined reference to `_restgpr_18_x'
      152. /opt/devkitpro/libogc/lib/wii/libogc.a(si.o): In function `__si_interrupthandler':
      153. /Users/davem/projects/devkitpro/libogc/libogc/si.c:409: undefined reference to `_restgpr_25_x'
      154. /opt/devkitpro/libogc/lib/wii/libogc.a(si.o): In function `SI_GetType':
      155. /Users/davem/projects/devkitpro/libogc/libogc/si.c:635: undefined reference to `_restgpr_24_x'
      156. /opt/devkitpro/libogc/lib/wii/libogc.a(si.o): In function `SI_GetTypeAsync':
      157. /Users/davem/projects/devkitpro/libogc/libogc/si.c:661: undefined reference to `_restgpr_27_x'
      158. /opt/devkitpro/libogc/lib/wii/libogc.a(si.o): In function `SI_RegisterPollingHandler':
      159. /Users/davem/projects/devkitpro/libogc/libogc/si.c:693: undefined reference to `_restgpr_30_x'
      160. /opt/devkitpro/libogc/lib/wii/libogc.a(si.o): In function `SI_UnregisterPollingHandler':
      161. /Users/davem/projects/devkitpro/libogc/libogc/si.c:714: undefined reference to `_restgpr_31_x'
      162. /opt/devkitpro/libogc/lib/wii/libogc.a(ipc.o): In function `__ipc_sendrequest':
      163. /Users/davem/projects/devkitpro/libogc/libogc/ipc.c:327: undefined reference to `_restgpr_29_x'
      164. /opt/devkitpro/libogc/lib/wii/libogc.a(ipc.o): In function `__ipc_syncrequest':
      165. /Users/davem/projects/devkitpro/libogc/libogc/ipc.c:718: undefined reference to `_restgpr_29_x'
      166. /opt/devkitpro/libogc/lib/wii/libogc.a(ipc.o): In function `__ipc_interrupthandler':
      167. /Users/davem/projects/devkitpro/libogc/libogc/ipc.c:445: undefined reference to `_restgpr_29_x'
      168. /opt/devkitpro/libogc/lib/wii/libogc.a(ipc.o): In function `__ipc_asyncrequest':
      169. /Users/davem/projects/devkitpro/libogc/libogc/ipc.c:698: undefined reference to `_restgpr_31_x'
      170. /opt/devkitpro/libogc/lib/wii/libogc.a(ipc.o): In function `__ios_ioctlvformat_parse':
      171. /Users/davem/projects/devkitpro/libogc/libogc/ipc.c:460: undefined reference to `strnlen'
      172. /Users/davem/projects/devkitpro/libogc/libogc/ipc.c:475: undefined reference to `memset'
      173. /Users/davem/projects/devkitpro/libogc/libogc/ipc.c:476: undefined reference to `memset'
      174. /Users/davem/projects/devkitpro/libogc/libogc/ipc.c:487: undefined reference to `__ctype_ptr__'
      175. /opt/devkitpro/devkitPPC/lib/gcc/powerpc-eabi/4.8.2/../../../../powerpc-eabi/bin/ld: /Users/davem/projects/devkitpro/libogc/libogc/ipc.c:487:(.text.__ios_ioctlvformat_parse+0xfc): unresolvable R_PPC_EMB_SDA21 relocation against symbol `__ctype_ptr__'
      176. /Users/davem/projects/devkitpro/libogc/libogc/ipc.c:557: undefined reference to `strnlen'
      177. /Users/davem/projects/devkitpro/libogc/libogc/ipc.c:568: undefined reference to `memcpy'
      178. /Users/davem/projects/devkitpro/libogc/libogc/ipc.c:589: undefined reference to `__ctype_ptr__'
      179. /opt/devkitpro/devkitPPC/lib/gcc/powerpc-eabi/4.8.2/../../../../powerpc-eabi/bin/ld: /Users/davem/projects/devkitpro/libogc/libogc/ipc.c:589:(.text.__ios_ioctlvformat_parse+0x4ac): unresolvable R_PPC_EMB_SDA21 relocation against symbol `__ctype_ptr__'
      180. /Users/davem/projects/devkitpro/libogc/libogc/ipc.c:683: undefined reference to `_restgpr_21_x'
      181. collect2: error: ld returned 1 exit status
      Alles anzeigen

      Ich glaube, am besten installiere ich DevkitPro und DevkitPPC nochmal komplett neu und fange von vorne an ...

      DevkitPro Archiv (alte Versionen / old versions): wii.leseratte10.de/devkitPro/
      Want to donate for Wiimmfi and Wii-Homebrew.com? Patreon / PayPal

      Dieser Beitrag wurde bereits 0 mal editiert, zuletzt von Leseratte ()

      Mit void _start() läufts auch bei mir nicht, selbst mit Makefile nicht. Deswegen int main() mit return 0;

      Hier das gesamte Makefile:

      Quellcode

      1. #---------------------------------------------------------------------------------
      2. # Clear the implicit built in rules
      3. #---------------------------------------------------------------------------------
      4. .SUFFIXES:
      5. #---------------------------------------------------------------------------------
      6. ifeq ($(strip $(DEVKITPPC)),)
      7. $(error "Please set DEVKITPPC in your environment. export DEVKITPPC=<path to>devkitPro/devkitPPC)
      8. endif
      9. export LIBOGC_INC := $(DEVKITPRO)/libogc/include
      10. export LIBOGC_LIB := $(DEVKITPRO)/libogc/lib/wii
      11. MACHDEP = -DGEKKO -mrvl -mcpu=750 -meabi -mhard-float
      12. #---------------------------------------------------------------------------------
      13. # change shell on Snow Leopard
      14. #---------------------------------------------------------------------------------
      15. UNAME_S := $(shell uname -s)
      16. UNAME_R := $(shell uname -r)
      17. ifneq (,$(findstring Darwin,$(UNAME_S)))
      18. ifneq (,$(findstring 10.8.0,$(UNAME_R)))
      19. export SHELL=/bin/bash
      20. endif
      21. endif
      22. #---------------------------------------------------------------------------------
      23. # path to tools
      24. #---------------------------------------------------------------------------------
      25. export PORTLIBS := $(DEVKITPRO)/portlibs/ppc
      26. export PATH := $(DEVKITPPC)/bin:$(PORTLIBS)/bin:$(PATH)
      27. #---------------------------------------------------------------------------------
      28. # the prefix on the compiler executables
      29. #---------------------------------------------------------------------------------
      30. PREFIX := powerpc-eabi-
      31. export AS := $(PREFIX)as
      32. export CC := $(PREFIX)gcc
      33. export CXX := $(PREFIX)g++
      34. export AR := $(PREFIX)ar
      35. export OBJCOPY := $(PREFIX)objcopy
      36. ISVC=$(or $(VCBUILDHELPER_COMMAND),$(MSBUILDEXTENSIONSPATH32),$(MSBUILDEXTENSIONSPATH))
      37. ifneq (,$(ISVC))
      38. ERROR_FILTER := 2>&1 | sed -e 's/\(.[a-zA-Z]\+\):\([0-9]\+\):/\1(\2):/g'
      39. endif
      40. #---------------------------------------------------------------------------------
      41. %.a:
      42. #---------------------------------------------------------------------------------
      43. @echo $(notdir $@)
      44. @rm -f $@
      45. @$(AR) -rc $@ $^
      46. #---------------------------------------------------------------------------------
      47. %.o: %.cpp
      48. @echo $(notdir $<)
      49. @$(CXX) -MMD -MP -MF $(DEPSDIR)/$*.d $(CXXFLAGS) -c $< -o $@ $(ERROR_FILTER)
      50. #---------------------------------------------------------------------------------
      51. %.o: %.c
      52. @echo $(notdir $<)
      53. @$(CC) -MMD -MP -MF $(DEPSDIR)/$*.d $(CFLAGS) -c $< -o $@ $(ERROR_FILTER)
      54. #---------------------------------------------------------------------------------
      55. %.o: %.m
      56. @echo $(notdir $<)
      57. @$(CC) -MMD -MP -MF $(DEPSDIR)/$*.d $(OBJCFLAGS) -c $< -o $@ $(ERROR_FILTER)
      58. #---------------------------------------------------------------------------------
      59. %.o: %.s
      60. @echo $(notdir $<)
      61. @$(CC) -MMD -MP -MF $(DEPSDIR)/$*.d -x assembler-with-cpp $(ASFLAGS) -c $< -o $@ $(ERROR_FILTER)
      62. #---------------------------------------------------------------------------------
      63. %.o: %.S
      64. @echo $(notdir $<)
      65. @$(CC) -MMD -MP -MF $(DEPSDIR)/$*.d -x assembler-with-cpp $(ASFLAGS) -c $< -o $@ $(ERROR_FILTER)
      66. #---------------------------------------------------------------------------------
      67. # canned command sequence for binary data
      68. #---------------------------------------------------------------------------------
      69. define bin2o
      70. bin2s -a 32 $< | $(AS) -o $(@)
      71. echo "extern const u8" `(echo $(<F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(<F) | tr . _)`.h
      72. echo "extern const u8" `(echo $(<F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(<F) | tr . _)`.h
      73. echo "extern const u32" `(echo $(<F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(<F) | tr . _)`.h
      74. endef
      75. #---------------------------------------------------------------------------------
      76. %.dol: %.elf
      77. @echo output ... $(notdir $@)
      78. @elf2dol $< $@
      79. #---------------------------------------------------------------------------------
      80. %.tpl : %.scf
      81. @echo $(notdir $<)
      82. @gxtexconv -s $< -d $(DEPSDIR)/$*.d -o $@
      83. #---------------------------------------------------------------------------------
      84. %.elf:
      85. @echo linking ... $(notdir $@)
      86. @$(LD) $^ $(LDFLAGS) $(LIBPATHS) $(LIBS) -o $@
      87. #---------------------------------------------------------------------------------
      88. # TARGET is the name of the output
      89. # BUILD is the directory where object files & intermediate files will be placed
      90. # SOURCES is a list of directories containing source code
      91. # INCLUDES is a list of directories containing extra header files
      92. #---------------------------------------------------------------------------------
      93. TARGET := $(notdir $(CURDIR))
      94. BUILD := build
      95. SOURCES := source
      96. DATA := data
      97. INCLUDES :=
      98. #---------------------------------------------------------------------------------
      99. # options for code generation
      100. #---------------------------------------------------------------------------------
      101. CFLAGS = -g -O2 -Wall $(MACHDEP) $(INCLUDE)
      102. CXXFLAGS = $(CFLAGS)
      103. LDFLAGS = -g $(MACHDEP) -Wl,-Map,$(notdir $@).map
      104. #---------------------------------------------------------------------------------
      105. # any extra libraries we wish to link with the project
      106. #---------------------------------------------------------------------------------
      107. LIBS := -lwiiuse -lbte -logc -lm -ldi
      108. #---------------------------------------------------------------------------------
      109. # list of directories containing libraries, this must be the top level containing
      110. # include and lib
      111. #---------------------------------------------------------------------------------
      112. LIBDIRS :=
      113. #---------------------------------------------------------------------------------
      114. # no real need to edit anything past this point unless you need to add additional
      115. # rules for different file extensions
      116. #---------------------------------------------------------------------------------
      117. ifneq ($(BUILD),$(notdir $(CURDIR)))
      118. #---------------------------------------------------------------------------------
      119. export OUTPUT := $(CURDIR)/$(TARGET)
      120. export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
      121. $(foreach dir,$(DATA),$(CURDIR)/$(dir))
      122. export DEPSDIR := $(CURDIR)/$(BUILD)
      123. #---------------------------------------------------------------------------------
      124. # automatically build a list of object files for our project
      125. #---------------------------------------------------------------------------------
      126. CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
      127. CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
      128. sFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
      129. SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S)))
      130. BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
      131. #---------------------------------------------------------------------------------
      132. # use CXX for linking C++ projects, CC for standard C
      133. #---------------------------------------------------------------------------------
      134. ifeq ($(strip $(CPPFILES)),)
      135. export LD := $(CC)
      136. else
      137. export LD := $(CXX)
      138. endif
      139. export OFILES := $(addsuffix .o,$(BINFILES)) \
      140. $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) \
      141. $(sFILES:.s=.o) $(SFILES:.S=.o)
      142. #---------------------------------------------------------------------------------
      143. # build a list of include paths
      144. #---------------------------------------------------------------------------------
      145. export INCLUDE := $(foreach dir,$(INCLUDES), -iquote $(CURDIR)/$(dir)) \
      146. $(foreach dir,$(LIBDIRS),-I$(dir)/include) \
      147. -I$(CURDIR)/$(BUILD) \
      148. -I$(LIBOGC_INC)
      149. #---------------------------------------------------------------------------------
      150. # build a list of library paths
      151. #---------------------------------------------------------------------------------
      152. export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) \
      153. -L$(LIBOGC_LIB)
      154. export OUTPUT := $(CURDIR)/$(TARGET)
      155. .PHONY: $(BUILD) clean
      156. #---------------------------------------------------------------------------------
      157. $(BUILD):
      158. @[ -d $@ ] || mkdir -p $@
      159. @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
      160. #---------------------------------------------------------------------------------
      161. clean:
      162. @echo clean ...
      163. @rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).dol
      164. #---------------------------------------------------------------------------------
      165. run:
      166. wiiload $(TARGET).dol
      167. #---------------------------------------------------------------------------------
      168. else
      169. DEPENDS := $(OFILES:.o=.d)
      170. #---------------------------------------------------------------------------------
      171. # main targets
      172. #---------------------------------------------------------------------------------
      173. $(OUTPUT).dol: $(OUTPUT).elf
      174. $(OUTPUT).elf: $(OFILES)
      175. #---------------------------------------------------------------------------------
      176. # This rule links in binary data with the .jpg extension
      177. #---------------------------------------------------------------------------------
      178. %.jpg.o : %.jpg
      179. #---------------------------------------------------------------------------------
      180. @echo $(notdir $<)
      181. $(bin2o)
      182. -include $(DEPENDS)
      183. #---------------------------------------------------------------------------------
      184. endif
      185. #---------------------------------------------------------------------------------
      Alles anzeigen


      EigenschaftWert
      Modell:PlayStation Vita Slim, WiFi, schwarz, PCH-2016
      System-Software:3.63
      Modell:PlayStation TV
      System-Software:3.63, Whitelist Database modified
      Software:7 Vita Cartridges, 9 Titel als PSN-Download (Stand: 10. November 2016)
      Currently playing:Akiba's Trip 2: Undead & Undressed (+ DLC)


      EigenschaftWert
      Modell:PlayStation 4 Slim, 1 TB, CUH-2016B
      System-Software:4.06
      Software:1 PS4-Disk, 3 PSN-Downloads (Stand: 22. Dezember 2016)
      Currently playing:Megadimension Neptunia VII (+ DLC)
      Backlog:Deponia, Fairy Fencer F: Advent Dark Force, Sword Art Online: Hollow Realization

      EigenschaftWert
      Modell:Nintendo 3DS XL Yoshi Special Edition (grün-weiß)
      System-Software:10.1.0-27E
      Software:5 Titel als 3DS-Cartridge, 8 3DS-Titel als Download, 4 Virtual-Console-Titel (Stand: 18. Oktober 2015)
      Flashkarten:SuperCard DSTWO (wird nicht im 3DS benutzt)
      Currently playing:Hatsune Miku: Project Mirai DX / Pokémon: Omega Rubin / Cave Story + (3DSWare)

      EigenschaftWert
      Modell:Nintendo GameCube PAL Silber
      Revision:DOL-001
      Zubehör:2 Controller (Purple + Silber, kabelgeb.), 1 MemoryCard (128 MB, BigBen Interactive), 1 Game Boy Player, Nintendo MultiAV-Kabel, RGB-Kabel
      Spiele:12
      Sonstiges:SD Media Launcher

      EigenschaftWert
      Modell:Nintendo Wii Weiß
      Systemmenü:4.1E
      Boot Loader:Fixed Boot Loader (boot1c) / Standard Boot Loader boot2 v4
      BootMii:IOS
      Priiloader:v0.4 rev80 DE
      HBC:1.1.2
      cIOS + MIOS:IOS222 (hermes v4), IOS249[38] rev19 / cMIOS v10 with integrated GameCube Backup Launcher v0.2
      USB Loader + Storage:USB Loader GX (1.0.x), uLoader 5.1, cfg USB Loader, Neogamma / ohne



      Bei C brauchst du wie auch bei C++, eine void main(), diese muss dann deine void _Start() aufrufen. Prinzipiell rate ich aber von Zeichen in einem Funktionsnamen ab. In deinem Beispiel kannst du die void _Start() auch ganz weglassen und gleich in die Main() schreiben.
      @Starwolf3000: warum int, die Main() gibt in der Regel keine variable zurück, daher void, ohne Rückgabewert.
      sorry hatte die unteren Beiträge nicht gelesen

      MetaKnight schrieb:

      @Starwolf3000: warum int, die Main() gibt in der Regel keine variable zurück, daher void, ohne Rückgabewert.
      Weil die übliche Definition von main lautet: int main (int argc, char **argv);
      Der Rückgabewert is denn der Exit-Status des Programmes.

      Lässt man die Params weg, dann werden sie trotzdem übergeben. Damit das auch in C++ klappt, ist main() selbst als C-Binding (also ohne Name mangling) definiert. Fehlt der Rückgabe-Parameter, dann bauen die Compiler einen Ersatz und liefern EXIT_SUCCESS (fast immer 0) zurück. Häufig wird auch noch ein dritter Param auf die Environment-Vars geliefert.

      main() muss übrigens *nicht* der Einsprungpunkt ins Programm sein. Gerade, wenn Objekte dynamisch initialisiert werde (bei C++ üblich), sorgt eine Funktion hinter dem Einsprungpunkt für die Initialisierung, bevor main() aufgerufen wird. Nach dem Beenden von main() kommt dann das Aufräumen (Desctructoren). Ein Seitenausstieg erfolgt dann durch exit(EXIT_CODE).

      WIT: Wiimms ISO Tools
      Verwaltet Plain ISO, WDF, WIA, CISO, WBFS, FST: kann Extrahieren, Erstellen, Patchen, Mischen und Überprüfen

      SZS: Wiimms SZS Tools
      Verwaltet SZS-, BRRES-, U8-, BMG-, BREFT-Dateien uvm.



      PN ohne persönlichen Charakter werden ignoriert. Support-Anfragen gehören ins Forum.
      schon klar, aber ich denke so kompliziert wollte leseratte es dann doch nicht anfangen, daher dieser Fehler.
      Main war bisher immer void bei mir, habe aber nie darauf geachtet was der Compiler noch anstellt