I'm pretty sure the gcc that can just be installed normally on a Pi can cross-compile for most other ARM processors? That shouldn't be an issue, but actually getting devkitARM set up and using other utilities would be a pain.
You can actually make and compile homebrew on the Raspberry Pi xD Me and @nastys used a Raspberry Pi to compile rxTools, some time ago.
We had to compile DevkitPro AND ImageMagick, as well as armips and a few other things for a "real" 3DS Dev Environment. We is da awesome!!!!!! WOOT WOOT!!!!!!
Edit: Made this comment without reading all the others.
I'll PM you when I get time I gotta find the instructions that I made, and the extra libs that I had used.Care to share your notes on setting this up? I'm running a Pi 2 model B with Raspian Jessie lite.
Thanks!I'll PM you when I get time I gotta find the instructions that I made, and the extra libs that I had used.
Yes, I did it on a tablet.
ARMv7
Install Ubuntu Vivid ARMHF in a 3772 MB image by using Linux Deploy, then run it and connect to it via VNC.
Download these files: https://mega.nz/#F!BxBzEQwJ!CaC_WHOZx5lJNe7gFA8ThQ
Extract devkitpro.tar.bz2 and extralibs.tar.bz2 in / as root (pun intended)
It should look like this:
/
opt
devkitpro
devkitARM
Some dependencies are missing from the package. You can find them in dependencies.tar.bz2. Open each directory (don't worry, they're a few) and run sudo make install to install them or copy the needed binaries to /opt/devkitpro/devkitARM/bin.
When done, run the following commands in LXTerm:
If any dependencies are missing, install them by using sudo apt-get install.Code:echo "export DEVKITPRO=/opt/devkitpro" >> ~/.bashrc echo "export DEVKITARM=/opt/devkitpro/devkitARM" >> ~/.bashrc echo "export PATH=$PATH:/opt/devkitpro/devkitARM/bin" >> ~/.bashrc source ~/.bashrc sudo apt-get install build-essential imagemagick git cd git clone --recursive https://github.com/roxas75/rxTools.git cd rxTools make release
ARMv6 (e.g. Raspberry Pi)/any CPU
- sudo apt-get install build-essential autoconf automake bison flex libncurses5-dev gcc libgmp-dev libmpfr-dev libmpc-dev libfreeimage3 libfreeimage-dev zlib1g zlib1g-dev libusb-dev mesa-common-dev texinfo imagemagick git
- git clone https://github.com/devkitPro/buildscripts
- Edit build-devkit.sh to skip the first if (change if [ 1 -eq 1 ] to if [ 0 -eq 1 ])
- sudo ./build-devkit.sh
- First option, install to /opt/devkitpro
- It will take several hours before it stops, throwing an error...
- cd .devkitARM
- cd 3dstools-1.0.3
- sudo ./configure
- sudo make install
- cd general-tools-1.0.0
- sudo ./configure
- sudo make install
- cd grit-0.8.12
- sudo ./configure
- sudo make install
- cd ndstool-1.50.3
- sudo ./configure
- sudo make install
- Extract extralibs.tar.bz2 to / as root (pun intended) and replace any files
- echo "export DEVKITPRO=/opt/devkitpro" >> ~/.bashrc
echo "export DEVKITARM=/opt/devkitpro/devkitARM" >> ~/.bashrc
echo "export PATH=$PATH:/opt/devkitpro/devkitARM/bin" >> ~/.bashrc
source ~/.bashrc- cd
- git clone --recursive https://github.com/roxas75/rxTools.git
- cd rxTools
- make release (if it fails because a dependency is missing, install it, enter make clean and try again)
- If it works, backup your devkitpro folder... If it doesn't, log out and try to build rxTools again.
There it is.
Error Message said:main.c
arm-none-eabi-gcc -MMD -MP -MF /home/pi/Downloads/CookieCollector-3DS--master/build/main.d -g -Wall -O2 -mword-relocations -fomit-frame-pointer -ffast-math -march=armv6k -mtune=mpcore -mfloat-abi=hard -I/home/pi/Downloads/CookieCollector-3DS--master/include -I/opt/devkitpro/libctru/include -I/home/pi/Downloads/CookieCollector-3DS--master/build -DARM11 -D_3DS -c /home/pi/Downloads/CookieCollector-3DS--master/source/main.c -o main.o
In file included from /opt/devkitpro/libctru/include/sys/select.h:3:0,
from /opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/types.h:68,
from /opt/devkitpro/libctru/include/3ds/util/utf.h:4,
from /opt/devkitpro/libctru/include/3ds.h:16,
from /home/pi/Downloads/CookieCollector-3DS--master/source/main.c:2:
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:104:34: error: unknown type name 'u_int'
bintime_mul(struct bintime *_bt, u_int _x)
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:145:17: error: unknown type name 'sbintime_t'
sbintime_getsec(sbintime_t _sbt)
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:151:17: error: unknown type name 'sbintime_t'
static __inline sbintime_t
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h: In function 'bttosbt':
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:155:12: error: 'sbintime_t' undeclared (first use in this function)
return (((sbintime_t)_bt.sec << 32) + (_bt.frac >> 32));
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:155:12: note: each undeclared identifier is reported only once for each function it appears in
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:155:23: error: expected ')' before '_bt'
return (((sbintime_t)_bt.sec << 32) + (_bt.frac >> 32));
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h: At top level:
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:159:9: error: unknown type name 'sbintime_t'
sbttobt(sbintime_t _sbt)
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:218:9: error: unknown type name 'sbintime_t'
sbttots(sbintime_t _sbt)
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:227:17: error: unknown type name 'sbintime_t'
static __inline sbintime_t
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h: In function 'tstosbt':
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:231:12: error: 'sbintime_t' undeclared (first use in this function)
return (((sbintime_t)_ts.tv_sec << 32) +
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:231:23: error: expected ')' before '_ts'
return (((sbintime_t)_ts.tv_sec << 32) +
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h: At top level:
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:236:9: error: unknown type name 'sbintime_t'
sbttotv(sbintime_t _sbt)
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:245:17: error: unknown type name 'sbintime_t'
static __inline sbintime_t
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h: In function 'tvtosbt':
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:249:12: error: 'sbintime_t' undeclared (first use in this function)
return (((sbintime_t)_tv.tv_sec << 32) +
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:249:23: error: expected ')' before '_tv'
return (((sbintime_t)_tv.tv_sec << 32) +
^
In file included from /opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:268:0,
from /opt/devkitpro/libctru/include/sys/select.h:3,
from /opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/types.h:68,
from /opt/devkitpro/libctru/include/3ds/util/utf.h:4,
from /opt/devkitpro/libctru/include/3ds.h:16,
from /home/pi/Downloads/CookieCollector-3DS--master/source/main.c:2:
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/time.h: At top level:
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/time.h:56:1: error: unknown type name 'clock_t'
clock_t _EXFUN(clock, (void));
^
In file included from /opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/types.h:68:0,
from /opt/devkitpro/libctru/include/3ds/util/utf.h:4,
from /opt/devkitpro/libctru/include/3ds.h:16,
from /home/pi/Downloads/CookieCollector-3DS--master/source/main.c:2:
/opt/devkitpro/libctru/include/sys/select.h:9:23: error: unknown type name 'fd_set'
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
^
/opt/devkitpro/libctru/include/sys/select.h:9:40: error: unknown type name 'fd_set'
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
^
/opt/devkitpro/libctru/include/sys/select.h:9:58: error: unknown type name 'fd_set'
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
^
/opt/devkitpro/devkitARM/base_rules:84: recipe for target 'main.o' failed
make[1]: *** [main.o] Error 1
Makefile:126: recipe for target 'build' failed
make: *** [build] Error 2
Error Message said:pi@raspberrypi:~/Downloads/3ds-examples-master/input/read-controls $ make
main.c
arm-none-eabi-gcc -MMD -MP -MF /home/pi/Downloads/3ds-examples-master/input/read-controls/build/main.d -g -Wall -O2 -mword-relocations -fomit-frame-pointer -ffunction-sections -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft -I/home/pi/Downloads/3ds-examples-master/input/read-controls/include -I/opt/devkitpro/libctru/include -I/home/pi/Downloads/3ds-examples-master/input/read-controls/build -DARM11 -D_3DS -c /home/pi/Downloads/3ds-examples-master/input/read-controls/source/main.c -o main.o
In file included from /opt/devkitpro/libctru/include/sys/select.h:3:0,
from /opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/types.h:68,
from /opt/devkitpro/libctru/include/3ds/util/utf.h:4,
from /opt/devkitpro/libctru/include/3ds.h:16,
from /home/pi/Downloads/3ds-examples-master/input/read-controls/source/main.c:16:
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:104:34: error: unknown type name 'u_int'
bintime_mul(struct bintime *_bt, u_int _x)
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:145:17: error: unknown type name 'sbintime_t'
sbintime_getsec(sbintime_t _sbt)
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:151:17: error: unknown type name 'sbintime_t'
static __inline sbintime_t
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h: In function 'bttosbt':
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:155:12: error: 'sbintime_t' undeclared (first use in this function)
return (((sbintime_t)_bt.sec << 32) + (_bt.frac >> 32));
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:155:12: note: each undeclared identifier is reported only once for each function it appears in
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:155:23: error: expected ')' before '_bt'
return (((sbintime_t)_bt.sec << 32) + (_bt.frac >> 32));
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h: At top level:
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:159:9: error: unknown type name 'sbintime_t'
sbttobt(sbintime_t _sbt)
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:218:9: error: unknown type name 'sbintime_t'
sbttots(sbintime_t _sbt)
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:227:17: error: unknown type name 'sbintime_t'
static __inline sbintime_t
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h: In function 'tstosbt':
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:231:12: error: 'sbintime_t' undeclared (first use in this function)
return (((sbintime_t)_ts.tv_sec << 32) +
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:231:23: error: expected ')' before '_ts'
return (((sbintime_t)_ts.tv_sec << 32) +
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h: At top level:
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:236:9: error: unknown type name 'sbintime_t'
sbttotv(sbintime_t _sbt)
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:245:17: error: unknown type name 'sbintime_t'
static __inline sbintime_t
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h: In function 'tvtosbt':
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:249:12: error: 'sbintime_t' undeclared (first use in this function)
return (((sbintime_t)_tv.tv_sec << 32) +
^
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:249:23: error: expected ')' before '_tv'
return (((sbintime_t)_tv.tv_sec << 32) +
^
In file included from /opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/time.h:268:0,
from /opt/devkitpro/libctru/include/sys/select.h:3,
from /opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/types.h:68,
from /opt/devkitpro/libctru/include/3ds/util/utf.h:4,
from /opt/devkitpro/libctru/include/3ds.h:16,
from /home/pi/Downloads/3ds-examples-master/input/read-controls/source/main.c:16:
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/time.h: At top level:
/opt/devkitpro/devkitARM/arm-none-eabi/sys-include/time.h:56:1: error: unknown type name 'clock_t'
clock_t _EXFUN(clock, (void));
^
In file included from /opt/devkitpro/devkitARM/arm-none-eabi/sys-include/sys/types.h:68:0,
from /opt/devkitpro/libctru/include/3ds/util/utf.h:4,
from /opt/devkitpro/libctru/include/3ds.h:16,
from /home/pi/Downloads/3ds-examples-master/input/read-controls/source/main.c:16:
/opt/devkitpro/libctru/include/sys/select.h:9:23: error: unknown type name 'fd_set'
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
^
/opt/devkitpro/libctru/include/sys/select.h:9:40: error: unknown type name 'fd_set'
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
^
/opt/devkitpro/libctru/include/sys/select.h:9:58: error: unknown type name 'fd_set'
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
^
/opt/devkitpro/devkitARM/base_rules:84: recipe for target 'main.o' failed
make[1]: *** [main.o] Error 1
Makefile:135: recipe for target 'build' failed
make: *** [build] Error 2
Python tools are platform-independent and C/C++ is exactly the same regardless of the platform you're coding on, so as long as you have a compiler working on your architecture you should be fine. Unfortunately, most of utilities that could help you with development are coded for x86, so that's a bummer, but not a hurdle you can't overcome.
Good luck setting up a stable emulation environment *and* using WINE on-top. Just run your IDE on a desktop, there's no reason to overcomplicate things.there is a way to run x86 programs. I have no idea how, but it works.
There is this one https://eltechs.com/product/exagear-desktop/there is a way to run x86 programs. I have no idea how, but it works.
nah I think a version of wine can do it. its an annoying setup though. ill look for it.There is this one https://eltechs.com/product/exagear-desktop/
But that one cost money, i think there are other ways though
Good luck setting up a stable emulation environment *and* using WINE on-top. Just run your IDE on a desktop, there's no reason to overcomplicate things.