为什么stdio.h标头中包含bits / libc-header-start.h文件夹

时间:2019-08-16 06:28:46

标签: c linux gcc glibc

我无法使用命令gcc -m32 -Werror a.c -o a从64位linux计算机编译为32位计算机的c程序 它显示了错误

In file included from a.c:1:
/usr/include/stdio.h:27:10: fatal error: bits/libc-header-start.h: No such file or directory
 #include <bits/libc-header-start.h>
          ^~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

我检查/usr/include/stdio.h中的stdio.h 在我的机器上Linux kali 4.19.0-kali4-amd64 #1 SMP Debian 4.19.28-2kali1 (2019-03-18) x86_64 GNU/Linux中包含行#include <bits/libc-header-start.h>,而在其他ubuntu 64位中则不包含该行

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int functionFunction(char *param)
{
    char *localString = "Conjunction Function";
    int localInt = 0xdeadbeef;
    char localString2[10];
    strcpy(localString2,param);
    return 1;
}

int main(int argc, char *argv[])
{
    char *localString = "Main Function";
    int localInt = 0x11223344;
    functionFunction(argv[1]);
    return 0;
}

1 个答案:

答案 0 :(得分:1)

在几个“标准”位置中搜索头文件。

其中有/ usr / include和/ usr / local / include以及(在x-86-64机器上)/ usr / include / x86-64-linux-gnu

在安装了所有必需的“环境”后,便在/ usr / include / x86-64-linux-gnu /目录中找到了bits目录,而该bits目录是头文件:libc-header-start.h头文件。

如果您使用的是64位计算机,但尚未安装所有必需的“环境”,则需要安装软件包:gcc-6-x86-64-linux-gnu