gpt4 book ai didi

c - "-static"on的gcc编译的可执行文件中包含了哪些函数?哪些功能不是?

转载 作者:太空狗 更新时间:2023-10-29 12:11:21 24 4
gpt4 key购买 nike

当使用 GCC 的 -static 选项编译 C 程序时,最终的可执行文件将包含大量 C 的标准函数。比如我的整个程序是这样的

int main(int argc, char *argv[]) {
printf("Hello, world!\n");
return 0;
}

查看编译后的可执行文件,strcmp()mktime()realloc()等函数是包含在其中,即使我的程序从不调用它们。但是stdlib.h中的一些函数是缺失的,比如rand()system()等。我的实验环境是:Ubuntu 14.04(Linux 内核 3.13.0);海湾合作委员会 4.8.2。我想知道当-static打开时,可执行文件中会包含哪些C函数。

最佳答案

静态链接意味着您的程序需要的所有库都在编译时链接并包含到我们的可执行文件中。换句话说,您的程序会更大,但它会非常独立(可移植),因为可执行文件将包含它需要运行的所有库。

这意味着使用 -static 您将在包含的库中定义所有函数。您没有放置 include 声明,但只是 printf() 已经使用了大量的库。

换句话说,我们无法告诉您在使用静态时您的程序中包含了哪些库,因为它会因程序而异。

关于c - "-static"on的gcc编译的可执行文件中包含了哪些函数?哪些功能不是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44347618/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com