Re: Cross compiling user applications for armv7
Date: Sat, 13 Sep 2025 16:45:09 UTC
Ok, let's start from the beginning because I feel a little bit lost. The buildenv concept is ok when you have no dependencies. However, I have. I see 3 potential options. 1. Use arm64 as an intermediate platform. This is unacceptable approach for me. 2. Setup poudriere for armv7 manually. I tried for 2 days and simply failed. 3. Setup qemu, and install dependencies and build custom code inside VM. Solutions 2 and 3 are acceptable for me. I guess 2 is better than 3, as it should be more performant. However, I have no idea how to implement idea 2 or 3 in practice. I also don't understand why setting up poudriere for armv7 is so hard. What is missing by default that I can't do it with a single command? Why the things that are missing are so hard to recreate manually? Regards, Michał Kruszewski Sent with [Proton Mail](https://proton.me/mail/home) secure email. On Saturday, September 13th, 2025 at 6:09 PM, Warner Losh <imp@bsdimp.com> wrote: > On Sat, Sep 13, 2025 at 9:50 AM Michał Kruszewski <mkru@protonmail.com> wrote: > >> It is more about how hard it is to setup an environment for cross compiling your own kernel modules or applications for armv7. >> I don't really care whether I use Buildroot way of doing things or FreeBSD way. >> The difference is that with Buildroot it takes 10 minutes to setup such environment. >> With FreeBSD I am struggling for two days. >> And the only advice I get is to use arm64 machine. >> Well, I don't have any. >> And even if I had, I wouldn't use it, because I find this concept deeply "misengineered". > > And it is bad engineering. Mark sometimes gives bad advice that's based on his experience where it was "easier" to do it this way. I just wish I'd replied more quickly. > >> I know that you want to help, and I appreciate it. >> I just feel frustrated with the complexity of this conceptually trivial task. > > No. I get it. I'm frustrated too since I've been working for years to make it better, and there's still these rough edges that turn people off. > > Warner > >> Regards, >> Michał Kruszewski >> >> Sent with Proton Mail secure email. >> >> On Saturday, September 13th, 2025 at 4:29 PM, Mark Millard <marklmi@yahoo.com> wrote: >> >>> >>> On Sep 13, 2025, at 00:20, Michał Kruszewski mkru@protonmail.com wrote: >>> >>> > Basically you are saying that I should have a separate physical arm64 machine for doing embedded armv7 development on FreeBSD. >>> > If I understand this correctly, I just can't understand how can people say that FreeBSD is embedded friendly. >>> > This is so much complex and convoluted compared to just using, for example, Buildroot on Linux. >>> > This also doesn't feel like a *nix way of solving things. >>> > I thought that after cross compiling world and kernel, there is some shell script that I can simply source to start cross-development for target platform. >>> >>> >>> I found this AI based note about Buildroot's way of >>> putting cross-build toolchains to use: >>> >>> QUOTE >>> Buildroot pre-configures and compiles all necessarily >>> packages during the build process to create a custom >>> root filesystem. >>> . . . >>> Buildroot focuses on static builds, meaing all selected >>> packages are compiled and integrated into the final root >>> filesystem image during the build process. There is no >>> concept of installing or updating packages on the target >>> after the initial build. >>> END QUOTE >>> >>> This is certainly not what the FreeBSD ports tree is >>> set up for. Buildroot or analogous does not exist for >>> FreeBSD --or most *BSD or Unix-- to my knowledge. >>> >>> May be NetBSD's pkgsrc cross build support: >>> >>> https://cdn.netbsd.org/pub/pkgsrc/current/pkgsrc/doc/HOWTO-use-crosscompile >>> >>> would be closer to how you like to work? (I've never >>> used such.) >>> >>> > Regards, >>> > Michał Kruszewski >>> > >>> > Sent with Proton Mail secure email. >>> > >>> > On Saturday, September 13th, 2025 at 12:23 AM, Mark Millard marklmi@yahoo.com wrote: >>> > >>> > > On Sep 12, 2025, at 14:10, Michał Kruszewski mkru@protonmail.com wrote: >>> > > >>> > > > A simple way is to set up an armv7 chroot / jail on an arm64 host such as a Raspberry Pi (Apple devices don't work!). >>> > > > Then it's just like a native environment, but usually much faster. >>> > > >>> > > > I don't have physical arm64 host. >>> > > > I also don't want to create a VM. >>> > > > The whole idea seems weird and unnatural. >>> > > >>> > > Ignoring the RPi4B detail: >>> > > >>> > > FreeBSD official armv7 port-packages are built this way >>> > > on arm64 hardware that natively supports user-space >>> > > armv7 code. (ampere* systems are used.) >>> > > >>> > > FreeBSD official i386 port-packages are built this way >>> > > on amd64 hardware that natively supports user-space >>> > > i386 code. >>> > > >>> > > No use of qemu variants of any kind: no attempt at >>> > > non-native-capable host environments. >>> > > >>> > > (Back when amd64 and qemu was used for the likes >>> > > of armv7, lots of stuff failed to build mcuh of >>> > > the time over the years --stuff that builds >>> > > just fine now. This was abandoned after native >>> > > became available. armv6 was always qemu based >>> > > on amd64 and could not build much as of the last >>> > > time a build was run.) >>> > > >>> > > > It sounds more like an exotic workaround. >>> > > >>> > > It is the official technique used for what FreeBSD >>> > > distributes for armv7 port-packages. >>> > > >>> > > > Regards, >>> > > > Michał Kruszewski >>> > > > >>> > > > Sent with Proton Mail secure email. >>> > > > >>> > > > On Friday, September 12th, 2025 at 10:46 PM, Robert Clausecker fuz@fuz.su wrote: >>> > > > >>> > > > > Hi Michał, >>> > > > > >>> > > > > A simple way is to set up an armv7 chroot / jail on an arm64 host such as >>> > > > > a Raspberry Pi (Apple devices don't work!). Then it's just like a native >>> > > > > environment, but usually much faster. >>> > > > > >>> > > > > Yours, >>> > > > > Robert Clausecker >>> > > > > >>> > > > > Am Fri, Sep 12, 2025 at 04:19:42PM +0000 schrieb Michał Kruszewski: >>> > > > > >>> > > > > > Is there any tutorial on how to cross compile custom user application for armv7? >>> > > > > > I struggle t find any. >>> > > > > > Cross compiling the system is pretty easy. >>> > > > > > However, how can one cross compile custom user application or kernel drivers. >>> > > > > > >>> > > > > > Regards, >>> > > > > > Michał Kruszewski >>> > > > > > >>> > > > > > Sent with Proton Mail secure email. >>> > > > > >>> > > > > -- >>> > > > > () ascii ribbon campaign - for an encoding-agnostic world >>> > > > > /\ - against html email - against proprietary attachments >>> > > >>> > > === >>> > > Mark Millard >>> > > marklmi at yahoo.com >>> >>> >>> === >>> Mark Millard >>> marklmi at yahoo.com