例如我这样做了:
${CROSS_COMPILE}gcc -static myinit.c -o myinit
我也是在没有静态的情况下做到这一点的:
${CROSS_COMPILE}gcc myinit.c -o myinit
在我的情况下没有效果,在两种情况下二进制给出相同的结果。
那么 static 这里的作用是什么?
这是我正在编译的程序:
#include <stdio.h>
int
main ()
{
printf ("\n");
printf ("Hello world from %s!\n", __FILE__);
while (1) { }
return 0;
}
还有
${CROSS_COMPILE}
是 arm-xilinx-linux-gnueabi-
最佳答案
$ ldd myinit
linux-vdso.so.1 => (0x00007fff5dbfe000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7ec63ce000)
/lib64/ld-linux-x86-64.so.2 (0x00007f7ec67c0000)
$ ldd myinit_static
not a dynamic executable
$ ll
total 884
drwxrwxr-x 2 jarod jarod 4096 Jun 7 16:00 ./
drwxr-xr-x 38 jarod jarod 4096 Jun 7 15:59 ../
-rwxrwxr-x 1 jarod jarod 8567 Jun 7 16:00 myinit*
-rw-rw-r-- 1 jarod jarod 136 Jun 7 16:00 myinit.c
-rwxrwxr-x 1 jarod jarod 877388 Jun 7 16:00 myinit_static*
-static 静态链接所有依赖项,因此您的二进制文件可以在没有安装所有这些运行时的计算机上运行
关于c++ - 编译标志 -static 对于 gcc 真正意味着什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24095091/