怎么让gcc编译出来的so文件不依赖于libgcc

2025-04-15 16:32:49
推荐回答(1个)
回答1:

/* main.c */
#include 
int main(int argc, char *argv[]) {
    fprintf(stderr,"argc: %d\n",argc);
    int i;
    for(i=0;i        fprintf(stderr,"argv[%d]: %s\n",i,argv[i]);
    }
    return 0;
}


time gcc -O2 main.c -o main
ldd ./main 返回
    linux-vdso.so.1 =>  (0x00007fff9fbfe000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f0e88001000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f0e883e6000)
size main 查看大小
   text       data        bss        dec        hex    filename
   1408        560         16       1984        7c0    main
静态编译(加上-static参数):

time gcc -O2 -static main.c -o main
ldd ./main 返回 “不是动态可执行文件”。
size main 查看大小
   text       data        bss        dec        hex    filename
 782762       7532       9632     799926      c34b6    main