Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3.10.0 binaries #88

Closed
moodeaudio opened this issue Oct 28, 2020 · 2 comments
Closed

3.10.0 binaries #88

moodeaudio opened this issue Oct 28, 2020 · 2 comments

Comments

@moodeaudio
Copy link

Hi,

For ARM platforms are three separate binaries required or is there an easy way to compile the sources into a single binary that runs on arm6, 7, and 64?

-Tim

@joshkunz
Copy link
Owner

Short answer: If you only care about RPi OS, then for now the armv6 build should work for everything. Otherwise, "it depends" unfortunately 😄.

The ARMv6, v7, and v8 specs are backwards compatible from an ISA standpoint, but the compatibility extensions are optional. Wikipedia claims that basically every chip implements the backwards compatibility. That means that in theory, our armv6 release should be compatible with any ARMv6+ processor.

However, there's a bit more too it than that... On Linux, the AArch64 ABI is not compatible with the AArch32 ABI, which means that the 32-bit armv6 and armv7 releases may not work on a Linux kernel built for AArch64. Linux does appear to have a compatibility mode, but I'm not sure how widely it's used. All of that said, my sense is that AArch64-built Linux is still pretty rare, and it's probably unlikely you'll find end-users using it (and if they are , they are probably capable of doing some more complicated build steps).

AFAIK, (and I'd love to know your take on it), Raspberry Pi OS is by far the most dominant consumer ARM platform for general PCs. Since RPi OS is optimized for simplicity, RPi OS currently provides only an AArch32 build that is compatible with all of ARMv6, v7, and v8. So for RPi OS specifically, there is a clear answer: The armv6 builds should work for any device running RPi OS.

One unfortunate caveat is that RPi OS is currently beta testing an AArch64 release, which means that in the future, there may need to be two binaries. Though it's likely RPi OS will include a compatibility to minimize the impact of the transition (though I haven't checked).

Sorry for the long-winded answer. Happy to answer more questions if needed.

@moodeaudio
Copy link
Author

Oops, I completely forgot that arm6 binaries will run on the other arm architectures. We use arm6 builds of a few other components and they work fine on arm7 and 8.

Right, 64-bit RaspiOS is still a ways out and even when it's released there will be some number of months where a lot of bugs will be found and squashed. Once that period is over our project will start looking at it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants