Here is one example : First, I linked liba.so into executable target by the compiler command "g++ -la " at linking stage . then ,I use dlopen to load liba.so in the executable's process . At this time ,the reference count of liba.so is 2 , am I right ? 2013/12/3 Sam Varshavchik <mrsam@xxxxxxxxxxxxxxx>: > Hatt Tom writes: > >> Thanks ! The problem has been resolved . >> >> And hereis one question I should get to be clear of . if I link one >> .so into one executeable file , would this increase the reference >> count by one already ? so dlclose would not unload that .so until the >> reference count decrease to zero . > > > Correct. > > >> >> 2013/12/2 Sam Varshavchik <mrsam@xxxxxxxxxxxxxxx>: >> > Hatt Tom writes: >> > >> >> If I use dlsym() to load the address manually ,will GOT be needed >> >> any >> >> more ? >> > >> > >> > If you always use dlopen(), and the dlsym() to call methods from a .so, >> > you >> > don't really need to link to it directly, any more, so this is a moot >> > point. >> > >> > >> > >> >> 2013/12/2 Nicholas Mc Guire <der.herr@xxxxxxx>: >> >> > On Mon, 02 Dec 2013, Hatt Tom wrote: >> >> > >> >> >> And also : why cannot I dlclose a .so that I've linked my executable >> >> >> to, in the usual fashion. >> >> >> >> >> >> is it because the reference count of that .so would not alwayes to >> >> >> be >> >> >> zero ? >> >> >> >> >> >> It seems puzzling to me ? >> >> >> >> >> > how would you ensure consistency of the GOT ? >> >> > I think the problem is that you would end up with invalid addresses >> >> > in >> >> > the GOT >> >> > as they were setup by ld based on link-time information. >> >> > >> >> > thx! >> >> > hofrat >> >> >> >> >> >> >> >> -- >> >> Best Regards! >> >> >> >> -- >> Best Regards! -- Best Regards!