增加笔记.

Signed-off-by: rick.chan <chenyang@autoai.com>
This commit is contained in:
rick.chan 2021-04-13 09:43:53 +08:00
parent a72dfb7728
commit 507fafb0ad
3 changed files with 51 additions and 0 deletions

View File

@ -0,0 +1,6 @@
# Objdump 基本使用
```bash
# 查看共享库符号表
objdump -tT <shared library>
```

View File

@ -0,0 +1,6 @@
# Readelf 基本使用
```bash
# 查看共享库符号表
readelf -s <shared library>
```

View File

@ -0,0 +1,39 @@
# GCC 库导出符号控制
GCC 编译库的时候默认导出所有符号。可通过指定以下参数选择默认的导出方案:
```bash
-fvisibility=default|internal|hidden|protected
```
如果设置成了 hidden那么可在函数前增加
```cpp
__attribute__ ((visibility("default")))
```
属性使其外部可见,或指定其属性。如:
```cpp
/**
* @file example.c
*/
void func0(void)
{
...
}
__attribute__ ((visibility("default")))
void func1(void)
{
...
}
```
然后:
```bash
gcc -shared -o libexample.so -fvisibility=hidden example.c
```
则 void func1(void) 将被导出,而 void func0(void) 会被隐藏。