Help compiling 3ds version of retroarch

Hi,

I’m running debian wheezy 64-bit, I’ve installed devkitarm per the guide here, which also install libctru 1.4.0

https://3dbrew.org/wiki/Setting_up_Development_Environment

Following the guide, i can build Makefile.ctr.salamander fine, but when i run:

make -f Makefile.ctr i get all kinds of undefined reference errors:

]$make -f Makefile.ctr
/opt/devkitpro/devkitARM/bin/picasso gfx/drivers/ctr_shaders/ctr_sprite.vsh gfx/drivers/ctr_shaders/ctr_sprite.gsh -o gfx/drivers/ctr_shaders/ctr_sprite.shbin
/opt/devkitpro/devkitARM/bin/bin2s gfx/drivers/ctr_shaders/ctr_sprite.shbin | /opt/devkitpro/devkitARM/bin/arm-none-eabi-as -o gfx/drivers/ctr_shaders/ctr_sprite.o
rm gfx/drivers/ctr_shaders/ctr_sprite.shbin
/opt/devkitpro/devkitARM/bin/arm-none-eabi-gcc -c -o ctr/gpu_old.o ctr/gpu_old.c -mword-relocations -fomit-frame-pointer -ffast-math -Werror=implicit-function-declaration -march=armv6k -mtune=mpcore -mfloat-abi=hard -marm -mfpu=vfp -mtp=soft -DARM11 -D_3DS -O3 -DLIBCTRU_NO_DEPRECATION -I. -Ideps -Ideps/libz -Ideps/7zip -Ideps/stb -Ilibretro-common/include -DRARCH_INTERNAL -DRARCH_CONSOLE -DHAVE_FILTERS_BUILTIN  -DHAVE_GRIFFIN=1 -DHAVE_MENU -DHAVE_RGUI -DHAVE_XMB -DHAVE_MATERIALUI -DHAVE_LIBRETRODB -DHAVE_CC_RESAMPLER -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA -DWANT_ZLIB -DHAVE_NETWORKING -DHAVE_CHEEVOS -DHAVE_SOCKET_LEGACY -std=gnu99 -ffast-math -I/opt/devkitpro/libctru/include
/opt/devkitpro/devkitARM/bin/arm-none-eabi-gcc -c -o griffin/griffin.o griffin/griffin.c -mword-relocations -fomit-frame-pointer -ffast-math -Werror=implicit-function-declaration -march=armv6k -mtune=mpcore -mfloat-abi=hard -marm -mfpu=vfp -mtp=soft -DARM11 -D_3DS -O3 -DLIBCTRU_NO_DEPRECATION -I. -Ideps -Ideps/libz -Ideps/7zip -Ideps/stb -Ilibretro-common/include -DRARCH_INTERNAL -DRARCH_CONSOLE -DHAVE_FILTERS_BUILTIN  -DHAVE_GRIFFIN=1 -DHAVE_MENU -DHAVE_RGUI -DHAVE_XMB -DHAVE_MATERIALUI -DHAVE_LIBRETRODB -DHAVE_CC_RESAMPLER -DHAVE_ZLIB -DHAVE_RPNG -DHAVE_RJPEG -DHAVE_RBMP -DHAVE_RTGA -DWANT_ZLIB -DHAVE_NETWORKING -DHAVE_CHEEVOS -DHAVE_SOCKET_LEGACY -std=gnu99 -ffast-math -I/opt/devkitpro/libctru/include
/opt/devkitpro/devkitARM/bin/arm-none-eabi-g++ -specs=ctr/3dsx_custom.specs -g -march=armv6k -mtune=mpcore -mfloat-abi=hard -marm -mfpu=vfp -mtp=soft -Wl,-Map,.map  gfx/drivers/ctr_shaders/ctr_sprite.o ctr/ctr_system.o ctr/ctr_memory.o ctr/ctr_linear.o ctr/gpu_old.o griffin/griffin.o -L. -L/opt/devkitpro/libctru/lib  -lretro_ctr  -lm -lctru -o retroarch_3ds.elf
griffin/griffin.o: In function `libretro_get_system_info':
griffin.c:(.text+0x67264): undefined reference to `retro_set_environment'
griffin.c:(.text+0x67278): undefined reference to `retro_set_environment'
griffin.c:(.text+0x67284): undefined reference to `retro_get_system_info'
griffin/griffin.o: In function `init_libretro_sym':
griffin.c:(.text+0x67518): undefined reference to `retro_init'
griffin.c:(.text+0x6751c): undefined reference to `retro_deinit'
griffin.c:(.text+0x67520): undefined reference to `retro_api_version'
griffin.c:(.text+0x67524): undefined reference to `retro_get_system_info'
griffin.c:(.text+0x67528): undefined reference to `retro_get_system_av_info'
griffin.c:(.text+0x6752c): undefined reference to `retro_set_environment'
griffin.c:(.text+0x67530): undefined reference to `retro_set_video_refresh'
griffin.c:(.text+0x67534): undefined reference to `retro_set_audio_sample'
griffin.c:(.text+0x67538): undefined reference to `retro_set_audio_sample_batch'
griffin.c:(.text+0x6753c): undefined reference to `retro_set_input_poll'
griffin.c:(.text+0x67540): undefined reference to `retro_set_input_state'
griffin.c:(.text+0x67544): undefined reference to `retro_set_controller_port_device'
griffin.c:(.text+0x67548): undefined reference to `retro_reset'
griffin.c:(.text+0x6754c): undefined reference to `retro_run'
griffin.c:(.text+0x67550): undefined reference to `retro_serialize_size'
griffin.c:(.text+0x67554): undefined reference to `retro_serialize'
griffin.c:(.text+0x67558): undefined reference to `retro_unserialize'
griffin.c:(.text+0x6755c): undefined reference to `retro_cheat_reset'
griffin.c:(.text+0x67560): undefined reference to `retro_cheat_set'
griffin.c:(.text+0x67564): undefined reference to `retro_load_game'
griffin.c:(.text+0x67568): undefined reference to `retro_load_game_special'
griffin.c:(.text+0x6756c): undefined reference to `retro_unload_game'
griffin.c:(.text+0x67570): undefined reference to `retro_get_region'
griffin.c:(.text+0x67574): undefined reference to `retro_get_memory_data'
griffin.c:(.text+0x67578): undefined reference to `retro_get_memory_size'
griffin/griffin.o: In function `core_init_symbols':
griffin.c:(.text+0x7bbdc): undefined reference to `retro_init'
griffin.c:(.text+0x7bbe0): undefined reference to `retro_deinit'
griffin.c:(.text+0x7bbe4): undefined reference to `retro_api_version'
griffin.c:(.text+0x7bbe8): undefined reference to `retro_get_system_info'
griffin.c:(.text+0x7bbec): undefined reference to `retro_get_system_av_info'
griffin.c:(.text+0x7bbf0): undefined reference to `retro_set_environment'
griffin.c:(.text+0x7bbf4): undefined reference to `retro_set_video_refresh'
griffin.c:(.text+0x7bbf8): undefined reference to `retro_set_audio_sample'
griffin.c:(.text+0x7bbfc): undefined reference to `retro_set_audio_sample_batch'
griffin.c:(.text+0x7bc00): undefined reference to `retro_set_input_poll'
griffin.c:(.text+0x7bc04): undefined reference to `retro_set_input_state'
griffin.c:(.text+0x7bc08): undefined reference to `retro_set_controller_port_device'
griffin.c:(.text+0x7bc0c): undefined reference to `retro_reset'
griffin.c:(.text+0x7bc10): undefined reference to `retro_run'
griffin.c:(.text+0x7bc14): undefined reference to `retro_serialize_size'
griffin.c:(.text+0x7bc18): undefined reference to `retro_serialize'
griffin.c:(.text+0x7bc1c): undefined reference to `retro_unserialize'
griffin.c:(.text+0x7bc20): undefined reference to `retro_cheat_reset'
griffin.c:(.text+0x7bc24): undefined reference to `retro_cheat_set'
griffin.c:(.text+0x7bc28): undefined reference to `retro_load_game'
griffin.c:(.text+0x7bc2c): undefined reference to `retro_load_game_special'
griffin.c:(.text+0x7bc30): undefined reference to `retro_unload_game'
griffin.c:(.text+0x7bc34): undefined reference to `retro_get_region'
griffin.c:(.text+0x7bc38): undefined reference to `retro_get_memory_data'
griffin.c:(.text+0x7bc3c): undefined reference to `retro_get_memory_size'
griffin/griffin.o: In function `command_event_init_core':
griffin.c:(.text+0xdd834): undefined reference to `retro_init'
griffin.c:(.text+0xdd838): undefined reference to `retro_deinit'
griffin.c:(.text+0xdd83c): undefined reference to `retro_api_version'
griffin.c:(.text+0xdd840): undefined reference to `retro_get_system_info'
griffin.c:(.text+0xdd844): undefined reference to `retro_get_system_av_info'
griffin.c:(.text+0xdd848): undefined reference to `retro_set_environment'
griffin.c:(.text+0xdd84c): undefined reference to `retro_set_video_refresh'
griffin.c:(.text+0xdd850): undefined reference to `retro_set_audio_sample'
griffin.c:(.text+0xdd854): undefined reference to `retro_set_audio_sample_batch'
griffin.c:(.text+0xdd858): undefined reference to `retro_set_input_poll'
griffin.c:(.text+0xdd85c): undefined reference to `retro_set_input_state'
griffin.c:(.text+0xdd860): undefined reference to `retro_set_controller_port_device'
griffin.c:(.text+0xdd864): undefined reference to `retro_reset'
griffin.c:(.text+0xdd868): undefined reference to `retro_run'
griffin.c:(.text+0xdd86c): undefined reference to `retro_serialize_size'
griffin.c:(.text+0xdd870): undefined reference to `retro_serialize'
griffin.c:(.text+0xdd874): undefined reference to `retro_unserialize'
griffin.c:(.text+0xdd878): undefined reference to `retro_cheat_reset'
griffin.c:(.text+0xdd87c): undefined reference to `retro_cheat_set'
griffin.c:(.text+0xdd880): undefined reference to `retro_load_game'
griffin.c:(.text+0xdd884): undefined reference to `retro_load_game_special'
griffin.c:(.text+0xdd888): undefined reference to `retro_unload_game'
griffin.c:(.text+0xdd88c): undefined reference to `retro_get_region'
griffin.c:(.text+0xdd890): undefined reference to `retro_get_memory_data'
griffin.c:(.text+0xdd894): undefined reference to `retro_get_memory_size'
collect2: error: ld returned 1 exit status
Makefile.ctr:242: recipe for target 'retroarch_3ds.elf' failed
make: *** [retroarch_3ds.elf] Error 1

I’m probably missing something stupid, Any ideas?

Thanks.

Were you able to resolve this? I’m running into the same issue and I’d like to document the solution.