Native development

Hi.

I need to build some stuff natively - but there is a huge problem. If I link against shared libraries, it most definetly will fail. There is a sort of workaround here; as I have built my own---

When I check file sizes, for example- libubox.so.20220927 in /lib, it reports 45148 as size- but on my build tree where it's compiled, file size is 288592 - if I replace these stripped versions with full versions, I get no linking issues..

But it's a huge pain in the.... To replace files with their full versions, since deps go sometimes pretty deep. I was wondering, would there be a way to build openwrt with full versions instead, since I don't have issue with stuff requiring more space..

See if How to build OpenWrt with glibc insted of musl helps.

It won't that much, as there will be ABI incompatibilities with pretty much all other libraries as well (different versions/ sonames and the very stripped-down configuration (feature selections) used by OpenWrt), nor will it prevent stripping or make OpenWrt self hosted (there are no binary header packages, nor -dev packages to link against).

The only real options would be to embrace the buildsystem for (off-board) cross-compiling or (off-board) static linking.

2 Likes

Thanks for answers- luckily I rarely need this. Sometimes when I write something that I've designed for openwrt and uses code that more or less requires openwrt (ubus, etc..), native development is the way to go, as it's much faster to build instead of using cross-compiling- one typo and a long wait again, until finished- even if it builds, I need to move produced binaries to test environment to see that I have a segfault :smiley:

Well, I just got done what I was after so there's propably going to be quite some time until I need this feature next time, so maybe it's not worth then trying...

One more thing- is this effect of stripping, nothing other? Because, one could pretty easily disable stripping even though it's not a feature in menu config. Just for future purposes + in case someone else needs this too.

Yes, headers are pretty much always missing, but if you build your own, they are available in staging_dir - it's quite a task if you are building something really big, but it's pretty annoying task for smaller things as well, even if it's just library or 2 that you are linking against..