On Wed, Sep 22, 2021 at 1:20 PM Ed W <li...@wildgooses.com> wrote: > Hi all, traffic seems to have dropped off here significantly, but here goes > > I am building a bunch of armv7a images on an AMD Ryzen9 machine (amd64). > So to keep things simple I > have just been doing the whole thing using qemu up until now, by which I > mean I have an arm stage 3 > somewhere, I chroot into it and then using userspace qemu binaries I just > run my whole script to > generate the target build from inside that chroot. This works but it's at > least a 5x slowdown from > native > > To optimise this I have tried > > - turning on the various compiler options for python (claimed to give a > 30% improvement) + LTO/PGO. > I don't notice any difference in the chroot - presume that the emulation > overhead is dominant effect > > - tried compiling qemu with -O3 and LTO (claimed to be supported since > 6.0). Doesn't give any > noticeable different in performance of emerge > > - Added a static compiled amd64 /bin/bash to the chroot - now this does > give a noticeable boost to > compile and emerge speeds. (random benchmark went from 26s to 22s) > > > So motivated by the last item I want to try and see how many native exes I > can push into the chroot > (since I'm running under usermode qemu! why not!). The obvious one is the > compiler > > Now, I have a cross compiler built, but a) that's not static, so I would > need to find a way to get > native libc into the chroot, and b) I'm not clear how I would call it > inside the chroot, could I > just move a symlink to the other compiler into the path? How does it find > things like libgcc*.so etc? > > Or perhaps this is easier than this? Can I just use some incantation in > the same way that the > crosscompiler must be working to build myself a straight gcc inside the > chroot which is native arch > and statically compiled? eg is it enough that assuming I can build gcc > static, can I just do this > from outside the chroot and overwrite the native: > > ROOT=$PWD emerge -1v --nodeps gcc > > > It seems to me that this should work at least for the gcc binaries, etc. > However, I'm completely > ignorant of whether I want things like the linker plugin in native arch or > target arch? What about > the libgcc*.so files? (They don't actually exist in my cross compiler > directories, but they are > linked in as dependencies in some binaries in target and exist in the > native compiler dir) > > Hacker news had someone do this recently and I believe meego used to do > something similar, so really > just trying to work out the details for this on gentoo. Any thoughts? > > Thanks > > Ed W >
It's not clear to me if you're building gentoo images, or just building some application. If you're building gentoo images, you might consider this project https://github.com/GenPi64 , we'd love to work with you on the mixed arch situation, since we suffer the same problem.