GCC4生成动态链接库,无法链接问题

来源:互联网 发布:java静态变量使用方法 编辑:程序博客网 时间:2024/06/05 08:02

        近日编译一动态链接库,又长了一点见识。

        动态库生成的过程是顺利的,但应用程序无论如何都无法使用该动态库。每每链接时,便报错"undefined reference to ......",开始我一直以为是缺少头文件,或链接时没有找到动态库的原因 。但仔细排查,除开了这种可能。代码本身也没有问题,因为生成静态库的时候,一切正常,唯独链接生成的动态库,总是报错。

      偶然中发现makefile中CFLAGS参数中有-fvisibility=hidden -fvisibility-inlines-hidden一段,于是查了资料,顿时如梦方醒。这两个参数的作用是为了减小共享库的体积,提高执行效率而设定的。但其会将部分符号隐藏,以致在链接阶段,外部程序无法找到对应要链接的符号,从而报错

这个特性是gcc4中才具备的,今天偶然遇上,了解了一把