On Thu, Mar 17, 2011 at 10:51 AM, Ian Lance Taylor <iant@xxxxxxxxxx> wrote: > Jovi Zhang <bookjovi@xxxxxxxxx> writes: > >> Â ÂI encounter a problem about several .so library linked by a >> problem, when a library A executing call function which source at same >> .so, but strangly it jump to another library B address with same >> function name, then program crash. >> >> Â ÂWhy library A don't find function name in itself address space >> firstly? because compiled using option -fPIC? and how can we avoid >> this problem except change function name? >> Â ÂI know C++ namespace can do this, but it only suit for C++, how >> about C face these problem? Can we use some gcc option help me? > > Please never send messages to both gcc@xxxxxxxxxxx and > gcc-help@xxxxxxxxxxxx ÂThis message is appropriate for > gcc-help@xxxxxxxxxxx; it is not appropriate for gcc@xxxxxxxxxxxx ÂPlease > keep any followups on gcc-help. ÂThanks. Never do that again. Thanks. > You did not mention what operationg system you are using. ÂAssuming it > is GNU/Linux, then this is expected behaviour. ÂShared libraries on > GNU/Linux and other ELF systems act approximately like static > libraries. ÂWhen two shared libraries define a symbol with the same > name, the first one encountered is used. > > There are a number of ways to change this default behaviour: GCC's > -fvisibility option, GCC's visibility attribute, the linker's -Bsymbolic > option, linker version scripts, etc. It seems that -Bsymbolic is what I'm looking for. it works. Thanks very very much for your help.