C语言链接动态库问题

一个C语言链接的问题。
在编译test进程时,需要链接a.so和b.so两个动态库。但是这两个动态库中存在同名的函数function,会导致如果编译链接test时,如果先链接a.so那么test进程执行时,调到的就是a中的function,如果先链接b.so那么test进程执行时,调到的就是b中的function。有什么好的方法可以在链接时就提示出来这么隐患。

说明你选这两个库本身就不合适。

你可以在编译时使用-Wl,--no-as-needed选项来告诉编译器,不要忽略不必要的动态库。这样,在编译时,如果出现同名函数,编译器就会报错,提示你有重复的函数。

例如,你可以使用下面的命令来编译test进程:

gcc -o test test.c -Wl,--no-as-needed -la -lb

这样,在编译时就会提示出同名函数的问题。

希望这个方法能帮助你解决问题。