Thanks. Remind me what the option to disable save States from command again? It was long ago and I cant recall. For retro run I meancrashoverride wrote: ↑Tue Jun 02, 2020 7:39 amThere are no dependencies that I am aware of. The kernel and uboot should be capable of running any modern Linux distribution (Ubuntu, Fedora, Arch, etc).
See also:
https://wiki.odroid.com/odroid_go_advance/build_uboot
https://wiki.odroid.com/odroid_go_advance/build_kernel
(Note that I do not package uboot/kernel/bootini. They are provided by HardKernel.)
Development Resources
-
- Posts: 395
- Joined: Tue Jul 16, 2019 12:30 am
- languages_spoken: English, French
- ODROIDs: XU4, N2, N2+, C2, C4, OGA, OGA-BE, H2+, OGS, OGST
- Location: Canada
- Has thanked: 32 times
- Been thanked: 187 times
- Contact:
Re: Development Resources
-
- Posts: 395
- Joined: Tue Jul 16, 2019 12:30 am
- languages_spoken: English, French
- ODROIDs: XU4, N2, N2+, C2, C4, OGA, OGA-BE, H2+, OGS, OGST
- Location: Canada
- Has thanked: 32 times
- Been thanked: 187 times
- Contact:
Re: Development Resources
The question is can I do it in a way that's not on the hard kernel wiki. Meaning can I build and install the kernel on the device, or do I have to use my linux VM and cross compile then put it onto the SD? The wiki only shows cross compiling steps, and my VM hates my SD reader
- meveric
- Posts: 12124
- Joined: Mon Feb 25, 2013 2:41 pm
- languages_spoken: german, english
- ODROIDs: X2, U2, U3, XU-Lite, XU3, XU3-Lite, C1, XU4, C2, C1+, XU4Q, HC1, N1, Go, H2 (N4100), N2, H2 (J4105), GoA, C4, GoA v1.1, H2+, HC4, GoS
- Has thanked: 92 times
- Been thanked: 674 times
- Contact:
Re: Development Resources
I always compile directly on the ODROIDs.
In fact it's much easier than cross compiling, but might be a little bit more time consuming, aside from that compiling natively should always be better.
But didn't you say, you just want to use the existing Kernel instead of compiling again?
In fact it's much easier than cross compiling, but might be a little bit more time consuming, aside from that compiling natively should always be better.
But didn't you say, you just want to use the existing Kernel instead of compiling again?
Donate to support my work on the ODROID GameStation Turbo Image for U2/U3 XU3/XU4 X2 X C1 as well as many other releases.
Check out the Games and Emulators section to find some of my work or check the files in my repository to find the software i build for ODROIDs.
If you want to add my repository to your image read my HOWTO integrate my repo into your image.
Check out the Games and Emulators section to find some of my work or check the files in my repository to find the software i build for ODROIDs.
If you want to add my repository to your image read my HOWTO integrate my repo into your image.
-
- Posts: 5841
- Joined: Tue Dec 30, 2014 8:42 pm
- languages_spoken: english
- ODROIDs: C1
- Has thanked: 0
- Been thanked: 639 times
- Contact:
Re: Development Resources
The options are here:
https://github.com/OtherCrashOverride/r ... pp#L71-L80
Use "--restart" or "-r" on the command line.
- These users thanked the author crashoverride for the post:
- Slaminger (Sat Jun 06, 2020 11:01 pm)
-
- Posts: 5841
- Joined: Tue Dec 30, 2014 8:42 pm
- languages_spoken: english
- ODROIDs: C1
- Has thanked: 0
- Been thanked: 639 times
- Contact:
Re: Development Resources
In the past, I have encountered issues building uboot and needed to use the same version of GCC that is used in the wiki. The GCC version will also affect kernel compilation as newer versions may detect errors that prior versions did not.
- These users thanked the author crashoverride for the post:
- Slaminger (Sat Jun 06, 2020 11:01 pm)
-
- Posts: 395
- Joined: Tue Jul 16, 2019 12:30 am
- languages_spoken: English, French
- ODROIDs: XU4, N2, N2+, C2, C4, OGA, OGA-BE, H2+, OGS, OGST
- Location: Canada
- Has thanked: 32 times
- Been thanked: 187 times
- Contact:
Re: Development Resources
Well I got the kernel and uboot from the links above into Ubuntu 19 but it didn't get the on board WiFi working
-
- Posts: 5841
- Joined: Tue Dec 30, 2014 8:42 pm
- languages_spoken: english
- ODROIDs: C1
- Has thanked: 0
- Been thanked: 639 times
- Contact:
-
- Posts: 395
- Joined: Tue Jul 16, 2019 12:30 am
- languages_spoken: English, French
- ODROIDs: XU4, N2, N2+, C2, C4, OGA, OGA-BE, H2+, OGS, OGST
- Location: Canada
- Has thanked: 32 times
- Been thanked: 187 times
- Contact:
Re: Development Resources
are we sure that those links are to the new kernel? because it didn't seem to enable l2 r2 or the on board wifi, I feel like it might have been the ubuntu 19 one
-
- Posts: 5841
- Joined: Tue Dec 30, 2014 8:42 pm
- languages_spoken: english
- ODROIDs: C1
- Has thanked: 0
- Been thanked: 639 times
- Contact:
Re: Development Resources
This likely indicates you are using the device tree for rev1.0 instead of the one for rev1.1.
https://github.com/hardkernel/linux/blo ... ux-v11.dts
The boot.ini file in the reference image automatically selects the device tree based on hardware revision.
-
- Posts: 395
- Joined: Tue Jul 16, 2019 12:30 am
- languages_spoken: English, French
- ODROIDs: XU4, N2, N2+, C2, C4, OGA, OGA-BE, H2+, OGS, OGST
- Location: Canada
- Has thanked: 32 times
- Been thanked: 187 times
- Contact:
Re: Development Resources
I confirmed that by looking at the boot.ini, it seems the instructions HK provided are for model 1 ubuntu 19 kernel and have not been updated for oga v11 yet, I do see the dts you referenced in the git clone tho, im just going to try swapping the boot.ini and see what I getcrashoverride wrote: ↑Mon Jun 08, 2020 2:08 amThis likely indicates you are using the device tree for rev1.0 instead of the one for rev1.1.
https://github.com/hardkernel/linux/blo ... ux-v11.dts
The boot.ini file in the reference image automatically selects the device tree based on hardware revision.
-
- Posts: 395
- Joined: Tue Jul 16, 2019 12:30 am
- languages_spoken: English, French
- ODROIDs: XU4, N2, N2+, C2, C4, OGA, OGA-BE, H2+, OGS, OGST
- Location: Canada
- Has thanked: 32 times
- Been thanked: 187 times
- Contact:
Re: Development Resources
I got it working, the button layout is messed up but I can fix that, l2 r2 and wifi now work in my ubuntu 19 image 

-
- Posts: 102
- Joined: Thu Oct 18, 2018 4:01 am
- languages_spoken: english
- ODROIDs: ODROID-GO
- Has thanked: 27 times
- Been thanked: 1 time
- Contact:
Re: Development Resources
Hi CrashOverride,crashoverride wrote: ↑Fri Dec 27, 2019 5:12 pmRetroRun
https://github.com/OtherCrashOverride/retrorun-go2
I've just cloned your retrorun-go2, and changed it to use four function keys to control brightness and volume instead of F4 then the dpad; but when I looked to copy it into /usr/bin, there was "retrorun" and "retrorun32". The make file built me "retrorun", so what's "retrorun32" and how do I build it?
Thanks
-
- Posts: 5841
- Joined: Tue Dec 30, 2014 8:42 pm
- languages_spoken: english
- ODROIDs: C1
- Has thanked: 0
- Been thanked: 639 times
- Contact:
Re: Development Resources
"retrorun32" is a 32bit (armhf) version of "retrorun". This is required since 64bit applications can not load 32bit shared libraries (libretro cores) and vice versa. It is build exactly the same as "retrorun" except in a 32bit environment instead of a 64bit one. The resulting binary is then renamed from "retrorun" to "retrorun32".
-
- Posts: 102
- Joined: Thu Oct 18, 2018 4:01 am
- languages_spoken: english
- ODROIDs: ODROID-GO
- Has thanked: 27 times
- Been thanked: 1 time
- Contact:
Re: Development Resources
Thanks for the reply. I'm building directly on the OGA, and I think I read in one of your other posts that there was a chroot to 32bit. Sorry if this is a dumb question, I know some basic linux stuff (and I've heard of a chroot), but could you (or anyone else) walk me through building the 32bit version over SSH?
-
- Posts: 5841
- Joined: Tue Dec 30, 2014 8:42 pm
- languages_spoken: english
- ODROIDs: C1
- Has thanked: 0
- Been thanked: 639 times
- Contact:
Re: Development Resources
It is not a trivial task. It requires using debootstrap to generate the 32bit environment (its another copy of the OS compiled for 32bit). Then, required dependencies and headers (libgo2, librga, build-essential, git, libopenal, libevdev, libdrm) need to be installed or copied into the environment. Optionally, mount point remapping is established to provide access to hardware devices like GPU.
I really would like to get the process documented, but I currently do not have the time. As previously stated, it is non-trivial.
-
- Posts: 102
- Joined: Thu Oct 18, 2018 4:01 am
- languages_spoken: english
- ODROIDs: ODROID-GO
- Has thanked: 27 times
- Been thanked: 1 time
- Contact:
Re: Development Resources
Yeah, it sounds it... Okay, I'll leave it for now, and see which cores i use don't use my new retrorun. If all the ones i use do, then i guess it's not really a problem
Thanks again
Thanks again
-
- Posts: 10
- Joined: Wed Jul 11, 2018 3:36 am
- languages_spoken: english spanish
- ODROIDs: GO, GO ADV (1.1)
- Has thanked: 23 times
- Been thanked: 2 times
- Contact:
Re: Development Resources
To create a quick chroot for odroid go adv, and enable qemu user emulation I am using this:
https://github.com/aplanas/chrootctl
You can now install the compiler and the headers commented by @crashoverride, still missing the part about remapping the hardware, does any one have a pointer about how to do this? I would like to complete this chrootctl script.
https://github.com/aplanas/chrootctl
You can now install the compiler and the headers commented by @crashoverride, still missing the part about remapping the hardware, does any one have a pointer about how to do this? I would like to complete this chrootctl script.
-
- Posts: 5841
- Joined: Tue Dec 30, 2014 8:42 pm
- languages_spoken: english
- ODROIDs: C1
- Has thanked: 0
- Been thanked: 639 times
- Contact:
Re: Development Resources
Code: Select all
mount --rbind /dev YOUR_ROOT/dev
Note that the chroot needs the same user/group IDs that match those set in /dev. Normally the "root" user is sufficient.
-
- Posts: 10
- Joined: Wed Jul 11, 2018 3:36 am
- languages_spoken: english spanish
- ODROIDs: GO, GO ADV (1.1)
- Has thanked: 23 times
- Been thanked: 2 times
- Contact:
Re: Development Resources
Ah cool! That was already in place then (https://github.com/aplanas/chrootctl/bl ... ootctl#L68). At least I am able to see the same devices inside the chroot and outside.
Thanks!
Thanks!
-
- Posts: 287
- Joined: Thu Mar 14, 2019 8:34 pm
- languages_spoken: english and norwegian
- Has thanked: 16 times
- Been thanked: 136 times
- Contact:
Re: Development Resources
Actually, there's no difference at all. The same compiler version will output the same binaries if you are running it natively or using a cross compiler. I build the entire OS in about 3 hours on my NUC8, how long does it take you to compile the kernel?

-
- Posts: 72
- Joined: Sat Nov 10, 2018 10:40 pm
- languages_spoken: english
- ODROIDs: Go, Go Advance
- Has thanked: 30 times
- Been thanked: 60 times
- Contact:
Re: Development Resources
I tried this script but I'm not sure what base environment it's based to run from. I tried a Lubuntu 16.04 X64 and it didn't work. I tried a ubuntu armv71 install on an Raspberry pi and I got a little further but it still failed to create the chroot. Any advice on this? My goal is to create a 32bit dev environment so I can build a 32 bit version of retroarch 1.8.9.apd wrote: ↑Tue Jul 07, 2020 2:28 amTo create a quick chroot for odroid go adv, and enable qemu user emulation I am using this:
https://github.com/aplanas/chrootctl
You can now install the compiler and the headers commented by @crashoverride, still missing the part about remapping the hardware, does any one have a pointer about how to do this? I would like to complete this chrootctl script.
Thanks
A jack of all trades is a master of none, but oftentimes better than a master of one
-
- Posts: 10
- Joined: Wed Jul 11, 2018 3:36 am
- languages_spoken: english spanish
- ODROIDs: GO, GO ADV (1.1)
- Has thanked: 23 times
- Been thanked: 2 times
- Contact:
Re: Development Resources
My env is openSUSE Tumbleweed, but I do not see anything that depends on it. Should work on any Linux distribution. Try again with the Lubuntu and show me the error. Be sure that you installed this:Christian_Haitian wrote: ↑Wed Jul 29, 2020 9:20 amI tried this script but I'm not sure what base environment it's based to run from. I tried a Lubuntu 16.04 X64 and it didn't work. I tried a ubuntu armv71 install on an Raspberry pi and I got a little further but it still failed to create the chroot. Any advice on this? My goal is to create a 32bit dev environment so I can build a 32 bit version of retroarch 1.8.9.
> apt-get install curl kpartx rsync qemu binfmt-support qemu-user-static
The process is very simple, download the official odroid go advance ubuntu image, extract the content via rsync, and register the qemu-static in a way that if an ARM (32 or 64) is detected, it will execute the command through qemu.
-
- Posts: 72
- Joined: Sat Nov 10, 2018 10:40 pm
- languages_spoken: english
- ODROIDs: Go, Go Advance
- Has thanked: 30 times
- Been thanked: 60 times
- Contact:
Re: Development Resources
I will try this thank you for sharing the required dependencies as well. How do I set it up so that this chroot is a 32bit only environment?apd wrote: ↑Wed Jul 29, 2020 8:33 pmMy env is openSUSE Tumbleweed, but I do not see anything that depends on it. Should work on any Linux distribution. Try again with the Lubuntu and show me the error. Be sure that you installed this:Christian_Haitian wrote: ↑Wed Jul 29, 2020 9:20 amI tried this script but I'm not sure what base environment it's based to run from. I tried a Lubuntu 16.04 X64 and it didn't work. I tried a ubuntu armv71 install on an Raspberry pi and I got a little further but it still failed to create the chroot. Any advice on this? My goal is to create a 32bit dev environment so I can build a 32 bit version of retroarch 1.8.9.
> apt-get install curl kpartx rsync qemu binfmt-support qemu-user-static
The process is very simple, download the official odroid go advance ubuntu image, extract the content via rsync, and register the qemu-static in a way that if an ARM (32 or 64) is detected, it will execute the command through qemu.
A jack of all trades is a master of none, but oftentimes better than a master of one
-
- Posts: 10
- Joined: Wed Jul 11, 2018 3:36 am
- languages_spoken: english spanish
- ODROIDs: GO, GO ADV (1.1)
- Has thanked: 23 times
- Been thanked: 2 times
- Contact:
Re: Development Resources
The official Ubuntu image for OGA mix 32 and 64 versions of libraries. Use apt-get to install the libraries of 32 bits that you require.Christian_Haitian wrote: ↑Wed Jul 29, 2020 11:57 pmHow do I set it up so that this chroot is a 32bit only environment?
Enable the chroot env (see the chrootctl doc for more help)
> sudo chrootctl shell
You can see that already the official image is multiarch, nothing to do here.
# dpkg --print-architecture
arm64
# dpkg --print-foreign-architectures.
armhf
To learn more about multiarch in debian:
https://wiki.debian.org/Multiarch/HOWTO
Install the compiler;
# apt install build-essential
Now you need to pass to GCC the appropriate flags to generate 32 bits executable, for example:
https://github.com/OtherCrashOverride/m ... ild.sh#L36
- These users thanked the author apd for the post:
- Christian_Haitian (Thu Jul 30, 2020 5:43 am)
-
- Posts: 72
- Joined: Sat Nov 10, 2018 10:40 pm
- languages_spoken: english
- ODROIDs: Go, Go Advance
- Has thanked: 30 times
- Been thanked: 60 times
- Contact:
Re: Development Resources
This is the error I get once I've verified I have installed all of the dependencies on Lubuntu 16.04.03 X64. This is when I attempt to do sudo ./chrootctl create
- Attachments
-
- Capture.PNG (7.56 KiB) Viewed 17459 times
A jack of all trades is a master of none, but oftentimes better than a master of one
-
- Posts: 10
- Joined: Wed Jul 11, 2018 3:36 am
- languages_spoken: english spanish
- ODROIDs: GO, GO ADV (1.1)
- Has thanked: 23 times
- Been thanked: 2 times
- Contact:
Re: Development Resources
IMAGE="ubuntu-20.04-4.4-es-odroid-goA-20200514.img"
# De-register the partitions, ignore the error
kpartx -vd "${IMAGE}"
# Register again the partitions
kpartx -va "${IMAGE}"
What is the output of the last command? Please, ignore the errors of the first one, is there to make sure that you start from scratch.
# De-register the partitions, ignore the error
kpartx -vd "${IMAGE}"
# Register again the partitions
kpartx -va "${IMAGE}"
What is the output of the last command? Please, ignore the errors of the first one, is there to make sure that you start from scratch.
-
- Posts: 72
- Joined: Sat Nov 10, 2018 10:40 pm
- languages_spoken: english
- ODROIDs: Go, Go Advance
- Has thanked: 30 times
- Been thanked: 60 times
- Contact:
Re: Development Resources
I get the following.apd wrote: ↑Fri Jul 31, 2020 4:43 pmIMAGE="ubuntu-20.04-4.4-es-odroid-goA-20200514.img"
# De-register the partitions, ignore the error
kpartx -vd "${IMAGE}"
# Register again the partitions
kpartx -va "${IMAGE}"
What is the output of the last command? Please, ignore the errors of the first one, is there to make sure that you start from scratch.
A jack of all trades is a master of none, but oftentimes better than a master of one
-
- Posts: 10
- Joined: Wed Jul 11, 2018 3:36 am
- languages_spoken: english spanish
- ODROIDs: GO, GO ADV (1.1)
- Has thanked: 23 times
- Been thanked: 2 times
- Contact:
Re: Development Resources
This seems to be OK. Christian, I am not able to reproduce your issue. The post with the first error suggested that kpartx was to able to detect the partitions, but this output from this last post shows that is not the case.
I suggest to retry, or use set -x to have some insight of what is happening. I any case I recommend you to move the debugging session outside the forum. Maybe create an issue in the github project?
-
- Posts: 102
- Joined: Thu Oct 18, 2018 4:01 am
- languages_spoken: english
- ODROIDs: ODROID-GO
- Has thanked: 27 times
- Been thanked: 1 time
- Contact:
Re: Development Resources
To use the hardware acceleration from libgo2, do you need to use the EGL context? At the minute I'm just using memory bitmaps and go2_presenter_post.
Would any kind soul be willing to do a small 3D rotating cube GLES example using libgo2 please?
Would any kind soul be willing to do a small 3D rotating cube GLES example using libgo2 please?
-
- Posts: 5841
- Joined: Tue Dec 30, 2014 8:42 pm
- languages_spoken: english
- ODROIDs: C1
- Has thanked: 0
- Been thanked: 639 times
- Contact:
Re: Development Resources
The "go2_presenter_post" function uses RGA2 (instead of GLES) for hardware acceleration of rotation and scaling.
To use GLES, a 3D "context" is created that provides surfaces to "go2_presenter_post".
1) Create a 3D context. Note the "major" and "minor" fields denote the version of GLES to use.
https://github.com/OtherCrashOverride/e ... p#L87-L100
2) Perform any GLES operations for drawing.
3) Display the surface:
https://github.com/OtherCrashOverride/e ... #L280-L288
- These users thanked the author crashoverride for the post:
- pmprog (Thu Aug 27, 2020 11:54 pm)
-
- Posts: 102
- Joined: Thu Oct 18, 2018 4:01 am
- languages_spoken: english
- ODROIDs: ODROID-GO
- Has thanked: 27 times
- Been thanked: 1 time
- Contact:
Re: Development Resources
Sorry, another probably dumb question, but which GLES versions are supported?
-
- Posts: 5841
- Joined: Tue Dec 30, 2014 8:42 pm
- languages_spoken: english
- ODROIDs: C1
- Has thanked: 0
- Been thanked: 639 times
- Contact:
Re: Development Resources
All of them!
1.0, 2.0, 3.0, 3.1, 3.2
- These users thanked the author crashoverride for the post:
- pmprog (Mon Sep 14, 2020 6:16 am)
-
- Posts: 72
- Joined: Sat Nov 10, 2018 10:40 pm
- languages_spoken: english
- ODROIDs: Go, Go Advance
- Has thanked: 30 times
- Been thanked: 60 times
- Contact:
Re: Development Resources
Greetings,
I was able to setup a 64 bit and 32 bit chroot dev environment on a Lubuntu 16.04 Virtualbox VM. I decided to package it and make available for others in case others encounter similar initial struggles like I did.
Helpful tools already preinstalled in both chroot instances:
build-essential git wget libdrm-dev python3 python3-pip python3-setuptools python3-wheel ninja-build libopenal-dev premake4 autoconf libevdev-dev ffmpeg libsnappy-dev libboost-tools-dev magics++ libboost-thread-dev libboost-all-dev
File Manager: PCManFM version 1.2.4 with Open as Root configured
User: osboxes.org
Pass: password
From terminal session like lxterminal:
sudo chroot /mnt/data/armhf/ #for 32 bit Arm environment
sudo chroot /mnt/data/arm64/ #for 64 bit Arm environment
It can be downloaded from the Mega or Google Drive links below
11/1/2020 Update -- I was able to create an updated virtual box vm development environment using a variant of Debian Dog called Buster Dog. It's a much smaller distro, it's based on the newer Debian Buster release, has PCManFM version 1.3.1, boots directly into root and has both 32 bit and 64 bit Arm environments included. This download is only a little over 2.7GBs and expands to a little under 8GBs but is configured to grow up to 50GBs to allow space for various development needs. Virtualbox guest additions have already be preinstalled as well for Virtual Box version 6.1.12. I've also created 2 shortcuts for the chroots on the vm's desktop named Arm32 and Arm64. If you double click into them, they will open a terminal directly into the respective environments so you can begin your various builds. Filezilla is also included.
01/05/2021 Update -- I've received a couple of reports that internet from within the chroots may not work out of the box. What has fixed this is to connect to the internet outside of the chroot (like ping google.com from a regular terminal session in the VM) then move the resolv.conf from /etc to the chroot /etc folders (/mnt/data/arm64/etc) and (/mnt/data/armhf/etc) then internet will work within them.
04/26/2021 Update -- I've created a newer virtual box VM development environment using Ubuntu Mate 20.04. It's not as small as the previous VM that was based on Debian Dog but should be more stable (especially with dragging and dropping of files between the host and the VM) and the internet in the chroots should work out of the box for most as I've forced the DNS servers to use Google's upstream (8.8.8.8). The image is 3.71GBs and expands to about 16GBs when imported into VB. It's set to allow dynamic expansion up to 60GBs. Virtualbox guest additions have already be preinstalled. I've also created 2 shortcuts for the chroots on the vm's desktop named Arm32 and Arm64. If you double click into them, they will open a terminal directly into the respective environments so you can begin your various builds. Filezilla is not installed by default but can be easily installed from the software center. Username: dev Password: dev
04/26/2021 Update -- I noticed when I compiled retroarch for with the --enable-odroidgo2 option, I would get no display output. The issue was related to using the newer rga headers available from here (https://github.com/rockchip-linux/linux-rga) as rockchip changed their master. Correct rga headers should be from here (https://github.com/rockchip-linux/linux-rga/tree/master). They just need to be copied to the /usr/local/include/rga folder for both chroots. I've include a .zip file with the proper header files included to this message for convenience in case rockchip makes other changes to that repo.
More info about Ubuntu Mate is available here: https://ubuntu-mate.org/about/
Download links:
Mega: https://mega.nz/file/3dIkHTRZ#s2DOkT8nr ... litLt8Ta8c
Google Drive: https://drive.google.com/file/d/1_6SLtN ... sp=sharing
Hopefully this is helpful for others.
I was able to setup a 64 bit and 32 bit chroot dev environment on a Lubuntu 16.04 Virtualbox VM. I decided to package it and make available for others in case others encounter similar initial struggles like I did.
Helpful tools already preinstalled in both chroot instances:
build-essential git wget libdrm-dev python3 python3-pip python3-setuptools python3-wheel ninja-build libopenal-dev premake4 autoconf libevdev-dev ffmpeg libsnappy-dev libboost-tools-dev magics++ libboost-thread-dev libboost-all-dev
File Manager: PCManFM version 1.2.4 with Open as Root configured
User: osboxes.org
Pass: password
From terminal session like lxterminal:
sudo chroot /mnt/data/armhf/ #for 32 bit Arm environment
sudo chroot /mnt/data/arm64/ #for 64 bit Arm environment
It can be downloaded from the Mega or Google Drive links below
11/1/2020 Update -- I was able to create an updated virtual box vm development environment using a variant of Debian Dog called Buster Dog. It's a much smaller distro, it's based on the newer Debian Buster release, has PCManFM version 1.3.1, boots directly into root and has both 32 bit and 64 bit Arm environments included. This download is only a little over 2.7GBs and expands to a little under 8GBs but is configured to grow up to 50GBs to allow space for various development needs. Virtualbox guest additions have already be preinstalled as well for Virtual Box version 6.1.12. I've also created 2 shortcuts for the chroots on the vm's desktop named Arm32 and Arm64. If you double click into them, they will open a terminal directly into the respective environments so you can begin your various builds. Filezilla is also included.
01/05/2021 Update -- I've received a couple of reports that internet from within the chroots may not work out of the box. What has fixed this is to connect to the internet outside of the chroot (like ping google.com from a regular terminal session in the VM) then move the resolv.conf from /etc to the chroot /etc folders (/mnt/data/arm64/etc) and (/mnt/data/armhf/etc) then internet will work within them.
04/26/2021 Update -- I've created a newer virtual box VM development environment using Ubuntu Mate 20.04. It's not as small as the previous VM that was based on Debian Dog but should be more stable (especially with dragging and dropping of files between the host and the VM) and the internet in the chroots should work out of the box for most as I've forced the DNS servers to use Google's upstream (8.8.8.8). The image is 3.71GBs and expands to about 16GBs when imported into VB. It's set to allow dynamic expansion up to 60GBs. Virtualbox guest additions have already be preinstalled. I've also created 2 shortcuts for the chroots on the vm's desktop named Arm32 and Arm64. If you double click into them, they will open a terminal directly into the respective environments so you can begin your various builds. Filezilla is not installed by default but can be easily installed from the software center. Username: dev Password: dev
04/26/2021 Update -- I noticed when I compiled retroarch for with the --enable-odroidgo2 option, I would get no display output. The issue was related to using the newer rga headers available from here (https://github.com/rockchip-linux/linux-rga) as rockchip changed their master. Correct rga headers should be from here (https://github.com/rockchip-linux/linux-rga/tree/master). They just need to be copied to the /usr/local/include/rga folder for both chroots. I've include a .zip file with the proper header files included to this message for convenience in case rockchip makes other changes to that repo.
More info about Ubuntu Mate is available here: https://ubuntu-mate.org/about/
Download links:
Mega: https://mega.nz/file/3dIkHTRZ#s2DOkT8nr ... litLt8Ta8c
Google Drive: https://drive.google.com/file/d/1_6SLtN ... sp=sharing
Hopefully this is helpful for others.
- Attachments
-
- rga.zip
- Correct rga.zip added on 8-16-2021
- (14.56 KiB) Downloaded 158 times
Last edited by Christian_Haitian on Mon Aug 16, 2021 1:31 pm, edited 2 times in total.
A jack of all trades is a master of none, but oftentimes better than a master of one
-
- Posts: 352
- Joined: Fri Feb 15, 2019 3:12 am
- languages_spoken: english, spanish
- ODROIDs: Odroid N2
- Has thanked: 115 times
- Been thanked: 142 times
- Contact:
Re: Development Resources
crashoverride wrote: ↑Fri Dec 27, 2019 5:12 pmRetroRun
https://github.com/OtherCrashOverride/retrorun-go2
Hello Crash;
I am trying to compile retrorun from source but I keep failing, this is the first (of many errors)
Code: Select all
make[1]: *** [Makefile:146: obj/Release/input.o] Error 1
make[1]: *** Waiting for unfinished jobs....
In file included from /mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/toolchain/aarch64-libreelec-linux-gnueabi/sysroot/usr/include/linux/posix_types.h:4,
from /mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/linux-faeb665a41b53ebb386e69fe737ccf0707aaf07b/include/uapi/linux/types.h:13,
from /mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/linux-faeb665a41b53ebb386e69fe737ccf0707aaf07b/include/linux/types.h:5,
from /mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/toolchain/aarch64-libreelec-linux-gnueabi/sysroot/usr/include/drm/drm_fourcc.h:27,
from ../../src/video.cpp:38:
/mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/linux-faeb665a41b53ebb386e69fe737ccf0707aaf07b/include/linux/stddef.h:10:2: error: expected identifier before 'false'
false = 0,
^~~~~
this is the complete build log: https://pastebin.com/HYES6qx2
Thank you!
-
- Posts: 5841
- Joined: Tue Dec 30, 2014 8:42 pm
- languages_spoken: english
- ODROIDs: C1
- Has thanked: 0
- Been thanked: 639 times
- Contact:
Re: Development Resources
Taking the first error as an example
Code: Select all
../../src/input.cpp: In function 'void input_gamepad_read()':
../../src/input.cpp:56:45: error: 'Go2InputFeatureFlags_RightAnalog' was not declared in this scope
if (go2_input_features_get(input) & Go2InputFeatureFlags_RightAnalog)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
https://github.com/OtherCrashOverride/r ... ut.cpp#L56
Code: Select all
if (go2_input_features_get(input) & Go2InputFeatureFlags_RightAnalog)
https://github.com/OtherCrashOverride/l ... nput.h#L98
Code: Select all
Go2InputFeatureFlags_RightAnalog = (1 << 2),
bc992566bb86f2fe0c8d981d4db46e2e2beb5b0e
-
- Posts: 352
- Joined: Fri Feb 15, 2019 3:12 am
- languages_spoken: english, spanish
- ODROIDs: Odroid N2
- Has thanked: 115 times
- Been thanked: 142 times
- Contact:
Re: Development Resources
Thanks! I updated libgo2 and now that error is gone, but still the compilation fails with a ton of other errors first one being:
if it helps I am using GCC 8.3 ( I know its old )
Could it be that I am using the wrong headers?
EDIT: Btw I am cross compiling
if it helps I am using GCC 8.3 ( I know its old )
Code: Select all
input.cpp
../../src/audio.cpp: In function 'size_t core_audio_sample_batch(const int16_t*, size_t)':
../../src/audio.cpp:92:34: warning: comparison of integer expressions of different signedness: 'size_t' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
if (audioFrameCount + frames > audioFrameLimit)
~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
In file included from /mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/toolchain/aarch64-libreelec-linux-gnueabi/sysroot/usr/include/linux/posix_types.h:4,
from /mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/linux-faeb665a41b53ebb386e69fe737ccf0707aaf07b/include/uapi/linux/types.h:13,
from /mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/linux-faeb665a41b53ebb386e69fe737ccf0707aaf07b/include/linux/types.h:5,
from /mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/toolchain/aarch64-libreelec-linux-gnueabi/sysroot/usr/include/drm/drm_fourcc.h:27,
from ../../src/video.cpp:38:
/mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/linux-faeb665a41b53ebb386e69fe737ccf0707aaf07b/include/linux/stddef.h:10:2: error: expected identifier before 'false'
false = 0,
^~~~~
/mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/linux-faeb665a41b53ebb386e69fe737ccf0707aaf07b/include/linux/stddef.h:10:2: error: expected '}' before 'false'
/mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/linux-faeb665a41b53ebb386e69fe737ccf0707aaf07b/include/linux/stddef.h:9:6: note: to match this '{'
enum {
^
/mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/linux-faeb665a41b53ebb386e69fe737ccf0707aaf07b/include/linux/stddef.h:10:2: error: expected unqualified-id before 'false'
false = 0,
^~~~~
/mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/linux-faeb665a41b53ebb386e69fe737ccf0707aaf07b/include/linux/stddef.h:12:1: error: expected declaration before '}' token
};
^
make[1]: *** [Makefile:134: obj/Release/video.o] Error 1
make[1]: *** Waiting for unfinished jobs....
EDIT: Btw I am cross compiling
-
- Posts: 5841
- Joined: Tue Dec 30, 2014 8:42 pm
- languages_spoken: english
- ODROIDs: C1
- Has thanked: 0
- Been thanked: 639 times
- Contact:
Re: Development Resources
The error is occurring here:
That line is a simple #include:
https://github.com/OtherCrashOverride/r ... eo.cpp#L38
This above is a reference to an OS provided kernel header. The entire error message indicates that OS provided kernel headers can not be compiled (not RetroRun). There is nothing architecture specific in RetroRun, and it should be compilable on any architecture (x86, arm, arm64, etc).
The build environment I use is stock Ubuntu 18.04 "rootfs". It reports its GCC version as follows:
TL;DR - The issue appears to be related to the build environment. There is not anything I can do on my side to resolve it. The only suggestion I have is to try wrapping the #include in a C specific block:
Code: Select all
In file included from /mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/toolchain/aarch64-libreelec-linux-gnueabi/sysroot/usr/include/linux/posix_types.h:4,
from /mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/linux-faeb665a41b53ebb386e69fe737ccf0707aaf07b/include/uapi/linux/types.h:13,
from /mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/linux-faeb665a41b53ebb386e69fe737ccf0707aaf07b/include/linux/types.h:5,
from /mnt/ee/build.EmuELEC-OdroidGoAdvance.aarch64-4.2/toolchain/aarch64-libreelec-linux-gnueabi/sysroot/usr/include/drm/drm_fourcc.h:27,
from ../../src/video.cpp:38:
https://github.com/OtherCrashOverride/r ... eo.cpp#L38
Code: Select all
#include <drm/drm_fourcc.h>
The build environment I use is stock Ubuntu 18.04 "rootfs". It reports its GCC version as follows:
Code: Select all
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/7/lto-wrapper
Target: aarch64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 7.5.0-3ubuntu1~18.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu
Thread model: posix
gcc version 7.5.0 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04)
Code: Select all
extern "C" {
#include <drm/drm_fourcc.h>
}
- These users thanked the author crashoverride for the post (total 2):
- shanti (Fri May 14, 2021 7:04 am) • odroid (Fri May 14, 2021 9:43 am)
-
- Posts: 352
- Joined: Fri Feb 15, 2019 3:12 am
- languages_spoken: english, spanish
- ODROIDs: Odroid N2
- Has thanked: 115 times
- Been thanked: 142 times
- Contact:
Re: Development Resources
Thanks, as we both suspected, the headers were wrong, I searched for alternatives and found some that do work and got it to compile!crashoverride wrote: ↑Fri May 14, 2021 6:28 amTL;DR - The issue appears to be related to the build environment.
Who is online
Users browsing this forum: No registered users and 1 guest