tqsheng

go.....
随笔 - 366, 文章 - 18, 评论 - 101, 引用 - 0
数据加载中……

Linux下动态库只导出部分函数

编译一个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工具查看,这个时候就可以达到隐藏不必要的函数,而只是导出定义过的函数。

posted on 2012-12-07 22:28 tqsheng 阅读(1298) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理