Important Notice: Our web hosting provider recently started charging us for additional visits, which was unexpected. In response, we're seeking donations. Depending on the situation, we may explore different monetization options for our Community and Expert Contributors. It's crucial to provide more returns for their expertise and offer more Expert Validated Answers or AI Validated Answers. Learn more about our hosting issue here.

My package links fine, but at runtime it can find symbols (like “tgetnum”), so why is uClibc broken?!

0
Posted

My package links fine, but at runtime it can find symbols (like “tgetnum”), so why is uClibc broken?!

0

This error crops up when libraries are not directly linked against other libraries that they need, and at runtime the necessary libraries are implicitly provided (due to yet another ELF in the chain being linked against it). The most common case is readline and its implicit curses dependency. Since there are many providers of curses functions out there, and may be swapped out at runtime, readline does not link against any specific library for these functions. Instead, the idea is that the end application gets to pick which library to link against and the runtime linker (ldso) takes care of fixing up the references. Basically, to fix things, make sure your libraries link directly against whatever libraries they need. So if readline needs ncurses, make sure it is linked against it. Do not use `ldd` to verify things, but rather use `readelf -d` (look for DT_NEEDED). The former shows the whole dependency tree while the latter shows the immediate dependencies. You can catch a lot of these e

Related Questions

What is your question?

*Sadly, we had to bring back ads too. Hopefully more targeted.

Experts123