Linux下动态库只导出部分函数
2011-10-26 10:22
197 查看
编译一个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工具查看,这个时候就可以达到隐藏不必要的函数,而只是导出定义过的函数。
#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工具查看,这个时候就可以达到隐藏不必要的函数,而只是导出定义过的函数。
相关文章推荐
- Linux下gcc编译控制动态库导出函数小结
- Linux下gcc编译控制动态库导出函数小结
- windows/Linux下动态库导出函数小结
- Linux下gcc编译, 控制动态库导出函数
- Linux下gcc编译控制动态库导出函数小结
- Linux下gcc编译控制动态库导出函数小结
- Linux下gcc编译控制动态库导出函数小结
- Linux下gcc编译控制动态库导出函数小结 .
- Linux下gcc编译控制动态库导出函数小结
- Linux下gcc编译, 控制动态库导出函数
- linux中的延时函数(部分)供初学者参考
- 部分spi linux driver probe 函数分析
- 在linux程序里面,知道一个函数地址,改函数是属于某个动态库的,怎么样得到这个动态库的全路径名(转)
- Linux下静态库_库的基本概念;如何生成静态库动态库;nm查看库中包含那些函数、ar生成静态库,查看库中包含那些.o文件、ldd查看程序依赖的.so文件;gcc/g++与库相关的参数-L,-l,-f
- 查看静态库(.lib)和动态库(.dll)的导出函数的信息
- linux 下仅导出指定函数的方法
- 控制linux动态链接库(so, standard object)导出函数(转)
- 查看静态库(.lib)和动态库(.dll)的导出函数的信息
- linux链接动态库提示某个函数找不到 undefined xxx
- 控制linux动态链接库(so, standard object)导出函数