The wording is quite unclear :-(
Assume that your target loaded /usr/lib/libfoo.so
, and that on the host (where GDB is running), you have a copy of the entire target tree in /tmp/host
. That is, a copy of target's /usr/lib/libfoo.so
is found on host in /tmp/host/usr/lib/libfoo.so
.
Then, the following commands are almost equivalent:
set solib-absolute-prefix /tmp/host
set solib-search-path /tmp/host/usr/lib
Now consider what happens if you also have /usr/local/lib/libbar.so
on target, and a copy of it in /tmp/host/usr/local/lib/libbar.so
.
The solib-absolute-prefix
as set above is still good to locate libbar.so
, but solib-search-path
would have to be modified like so:
set solib-search-path /tmp/host/usr/lib:/tmp/host/usr/local/lib
To summarize, if you have entire target tree under a single host $ROOT
, then just set solib-absolute-prefix
to $ROOT
and you should be good.
But if you have to "assemble" target paths from multiple disjoint trees, then solib-search-path
with multiple paths will allow GDB to still find correct libraries.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…