小编J. *_*Lui的帖子

将静态库链接到动态库时删除死代码

假设我有以下文件:

libmy_static_lib.c:

#include <stdio.h>
void func1(void){
    printf("func1() called from a static library\n");
}
void unused_func1(void){
    printf("printing from the unused function1\n");
}
void unused_func2(void){
    printf("printing from unused function2\n");
}
Run Code Online (Sandbox Code Playgroud)

libmy_static_lib.h:

void func(void);
void unused_func1(void);
void unused_func2(void);
Run Code Online (Sandbox Code Playgroud)

my_prog.c:

#include "libmy_static_lib.h"
#include <stdio.h>
void func_in_my_prog()
{
    printf("in my prog\n");
    func1();

}
Run Code Online (Sandbox Code Playgroud)

这是我链接库的方式:

# build the static library libmy_static_lib.a
gcc -fPIC -c -fdata-sections --function-sections -c libmy_static_lib.c -o libmy_static_lib.o
ar rcs libmy_static_lib.a libmy_static_lib.o

# build libmy_static_lib.a into a new shared library
gcc -fPIC -c ./my_prog.c …
Run Code Online (Sandbox Code Playgroud)

c gcc shared-libraries static-libraries dead-code

6
推荐指数
1
解决办法
1561
查看次数

标签 统计

c ×1

dead-code ×1

gcc ×1

shared-libraries ×1

static-libraries ×1