Need help: symbol not found running my compiled package: knxd

I successfully compiled knxd with new upstream version in my own trunk based buildroot using the same Makefile as before. But when running on my Archer c7 v4 I get new error messages like these:

Error relocating /usr/bin/knxd: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_: symbol not found
Error relocating /usr/bin/knxd: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEjc: symbol not found
Error relocating /usr/bin/knxd: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKc: symbol not found
Error relocating /usr/bin/knxd: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_: symbol not found
Error relocating /usr/bin/knxd: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc: symbol not found
Error relocating /usr/bin/knxd: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_: symbol not found

I guess a need a new dependeny or new compile directives. But what library is missing?
Your help is very appreciated because I'm not very familiar with developping.

Regards, Othmar

looks like libstdcpp

You should post your Makefile

It's the one I maintain in feeds/packages/net/knxd/Makefile since years (just with adjustments for the new upstream release 0.14.50).

When I install the new package knxd_0.14.50-1_mips_24kc.ipk the library libstdcpp6 gets installed as well, together with librt, libev and libfmt on a brand new snapshot firmware on my Archer c7 v4.

In the output I see it's compiled with -std=c++0x like with earlier releases and it does not complain about anything when package is built.

I'm not sure that it will fix it, but you could try adding a +libstdcpp to your DEPENDS line.

If that fails, try an explicit link TARGET_LDFLAGS += -lstdc++ in your Makefile

Thank you for your support. Unfortunately both steps make no difference. I can see the extra -lstdc++ on the log line.
I wonder if my buildroot is broken somehow or if it's caused by some changes in the upstream source.
Would it be considered unserious if I just risk a pull request for the new upstream version and check if the repo package works better? What should I do next?

I'm afraid something is broken in my buildroot. I recompiled the current 0.14.39-2 repo version of knxd again and I see the same problems running it, while the downloaded repo package works just fine.
How do I rebuild my buildroot most efficiently?

I decided to start over with my buildroot doing a git clone and guess what: my freshly compiled knxd package works well now. I'd wish there was an easier way to "clean up", even a simple "make clean" had no effect.

There are two additional types of "clean".

make dirclean should usually fix most things as it will nuke the bin, build_dir, staging_dir and toolchain.

make distclean is the nuclear option. In addition to what the dirclean does, a distclean will also remove all downloaded feeds content and nuke your config file. It should put everything back to a virgin state

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.