Mailinglist Archive: opensuse (1839 mails)

< Previous Next >
Re: [opensuse] quasselcore doesn't run
  • From: David Haller <dnh@xxxxxxxxxxxx>
  • Date: Sun, 26 Sep 2010 19:59:39 +0200
  • Message-id: <20100926175939.GA8128@xxxxxxxxxxxxxxxxxx>

On Sun, 26 Sep 2010, Anders Johansson wrote:
On Sunday 26 September 2010, Sascha 'saigkill' Manns wrote:
Am Sonntag, 26. September 2010 18:05:39 wrote Anders Johansson:
On Sunday 26 September 2010, Sascha 'saigkill' Manns wrote:
The output is:
linux-f34p:/etc/sysconfig # quasselcore
quasselcore: symbol lookup error: quasselcore: undefined symbol:
google is usually enough for finding these things. Otherwise I
normally do something like "find / -name \*.so.\* -exec nm -A -D {}
\; | grep <symbol I am looking for>" The library that contains the
function in question will have it tagged with a "T" and you'll see
the address offset of the function within it. Libraries which merely
call it have it marked "U" for Undefined

To make that task easier, there are c++filt and 'nm -C'. But yeah,
most times just reading the stuff "right" suffices (how the
QMetaType::registerTypedef is embedded in the above example is quite
typical). And once you know that Q... is Qt stuff ... ;)

I usually use something like:

for lib in /lib/lib*.a; do
nm [-C] "$lib" | grep '<SYMBOL>' && echo "$lib";

or something like that (as most .so are stripped here, i.e. nm just
has "no symbols" and I do have unstripped '.a' static libs for most
libs). Else, you'd use '*.so' instead. Using 'strings "$lib"' usually
still works on stripped libs BTW:

$ nm | grep xreadline
000015c0 T xreadline
$ strip
$ nm | grep xreadline
nm: no symbols
$ strings | grep xreadline

[libdhaller is just some private stuff, not fit for the public ;)]


"And 1.1.81 is officially BugFree(tm), so if you receive any bug-reports
on it, you know they are just evil lies." -- Linus Torvalds
To unsubscribe, e-mail: opensuse+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse+help@xxxxxxxxxxxx

< Previous Next >