From: JonY <jo...@us...> - 2013-03-11 14:10:24
|
On 3/11/2013 21:11, Edward Rosten wrote: > > I've not heard of that. > > If you link to a .so, it tries to find all the symbols at link time > and fails with a link error if you do not. > The .so is allowed to have undefined symbols, not the executable iirc. > However, this information is (partially?) discarded. > > Create a .so with void foo(); in it, then write a program to link to the .so. > > Recompile the .so with foo() missing. > > Run the program. > > What happens is that you get a link error at the first call to foo(). > It appears that the linker doesn't even bother to link functions until > they're first called (presumably by using some trap). > > At least that was the rather unexpected behaviour I encountered last > time I messed up my .so's. > Not really, ELF allows lazy binding. > Is this in any way related to delay loading of DLLs? Same idea, but different implementation. |