正文

Linux下动态库只导出部分函数2009-07-09 15:27:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/miaowei/45071.html

分享到:

编译一个1.c文件:
#include "stdio.h"

#if defined(__GNUC__) && \
        ((__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3))
#define NP_VISIBILITY_DEFAULT __attribute__((visibility("default")))
#else
#define NP_VISIBILITY_DEFAULT
#endif

#define NP_EXPORT(__type) NP_VISIBILITY_DEFAULT __type

NP_EXPORT(int) a()
{
printf("1.c i am a\0");
return 0;
}
int b()
{
return 0;
}
我的目的是默认没有使用NP_EXPORT宏的函数都隐藏起来,即把b函数给隐藏起来,而a函数则导出去。

我的编译步骤和指令如下:
gcc -c 1.c
gcc –fPIC -shared -fvisibility=hidden  -o 1.so 1.o

编译后生成了1.so文件。
我使用nm工具查看,这个时候就可以达到隐藏不必要的函数,而只是导出定义过的函数。

阅读(4812) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册