Why this would be cool: you can then easily find the non-stripped executables to debug them with gdbserver, as they are in the same relative path as in the target. Without that, you need to do a `find` inside build/ This is already done for shared libraries, where it is required for compilation, and that is already great as it allows me to `set sysroot ${buildroot_out_dir}/staging` This is an example of the type of setup I'm using: https://github.com/cirosantilli/linux-kernel-module-cheat/tree/b89ba9b799480e4eb1975f0a704409efb7d667d1#gdbserver Maybe we could hardlink them or something to reduce disk usage if that is a concern. I know that this is already doable on a per package basis, possiby by modifying the .mk of packages, e.g. as `pciutils` has for `lspci`: define PCIUTILS_INSTALL_STAGING_CMDS $(TARGET_MAKE_ENV) $(MAKE1) -C $(@D) $(PCIUTILS_MAKE_OPTS) \ PREFIX=$(STAGING_DIR)/usr SBINDIR=$(STAGING_DIR)/usr/bin \ install install-lib install-pcilib endef
This bug has been dormant for a long time. It look like a feature request rather than a bug but anyway it sounds valid. The proposed solution, however is hard to implement. Since Buildroot 2018.05 the root filesystem image is generated from a copy of TARGER_DIR, so we can move the strpping from target-finalize to the fakeroot script. This way we strip binaries only in the intermediary copy. I will submit a patch with this change for review.
As discussed in patchwork[1] The idea would be to ensure that all packages install in staging/, always. Then, identify packages that have different commands for target/ and staging/ and make them identical. Finally, remove the target install commands, and genreate it as a copy of staging at the beginning of the target-finalize step. https://patchwork.ozlabs.org/project/buildroot/patch/20191001013654.22298-2-unixmania@gmail.com/