在windows上,默认情况下,动态库中的符号都是对外隐藏的,除非你显示的指出要导出哪些符号,否则外界是看不到的.但是linux下情况刚好相反,对静态变量和全局变量,linux下so里面的符号对外可见.这就很容易出现一个问题,就是外界很可能会无意中修改so内部的符号或符号同名但内存结构不同,带来各种问题.有一种方法能将so里面的 符号隐藏起来,避免全局符号覆盖. 1.首先,编程参数中添加编译选项 -fvisibility=hidden,这个是隐藏符号的控制. 2.其次,在要导出的接口前添加__a