标签: header-file

Linux 内核头文件到底是什么?

可能的重复:
内核源代码树包含什么?这与 Linux 内核头文件有关吗?

我知道如果我想编译我自己的 Linux 内核,我需要 Linux 内核头文件,但它们到底有什么用?

我发现下面/usr/src/似乎有几十个 C 头文件。但是它们的目的是什么,它们不是直接包含在内核源代码中吗?

linux compiling header-file linux-kernel

39
推荐指数
3
解决办法
9万
查看次数

unistd.h中的'uni'是什么意思

unistd.h中的uni是什么意思

是unix的意思吗?还是通用的?
它是什么?

unix header-file terminology filenames posix

12
推荐指数
1
解决办法
3423
查看次数

/usr/include/sys 和 /usr/include/linux 的区别?

嗯,显然有区别,但我很好奇为什么有些东西在 /usr/include/sys 下而其他东西在 /usr/include/linux 下,并且具有相同的头文件名?这与 POSIX vx non-POSIX 有关系吗?

此外,我已经通过获取内核头文件包设法在我的 Fedora 系统上使用头文件填充 /usr/include/linux,是否有一个标准的包名称让我获取位于 /usr/include/sys 下的头文件? 我一直无法找到它。

linux fedora header-file

12
推荐指数
1
解决办法
6163
查看次数

使用实时内核头文件编译用户空间代码与默认头文件

根据客户要求,我使用默认内核安装了 CentOS 5.6。安装此内核后,time.h 文件包含#define CLOCK_MONOTONIC.

现在,实时内核与 kernel-devel 一起安装,我们的代码希望使用CLOCK_MONOTONIC_RAW. 它确实作为内核头文件的一部分存在,但是当我编译我们的代码时,它在标准用户空间包含中找不到它。

我的问题是,time.h使用实时内核包含/替换默认情况下找到的正确程序是什么?从我的研究来看,符号链接看起来很糟糕,那么应该如何处理呢?程序或过程是什么?升级到 CentOS 6.0 或 5.7 不是每个客户要求的选项。

centos header-file linux-kernel

11
推荐指数
1
解决办法
1296
查看次数

哪个头文件定义了指定机器架构的宏?

问题的简短版本:

其中C头包含宏对应于该系统的机器体系结构(例如,__x86_64____ia64____mips__?)

更长版本的问题:

我想在运行 Linux 的基于Tilera的系统上运行神经节监控工具。

Ganglia 目前不支持 Tilera。为了让它工作,我需要修改一个名为machine_type_func的 C 函数,它返回机器架构。这个函数的主体是在编译时确定的,它看起来像这样:

g_val_t
machine_type_func ( void )
{
   g_val_t val;

#ifdef __i386__
   snprintf(val.str, MAX_G_STRING_SIZE, "x86");
#endif
#ifdef __x86_64__
   snprintf(val.str, MAX_G_STRING_SIZE, "x86_64");
#endif
...
   return val;
}
Run Code Online (Sandbox Code Playgroud)

我需要为 Tilera 添加适当的行,但我不知道指定基于 Tilera 的系统的宏的名称。我猜这个宏是在标准 Linux 头文件之一中定义的,但我不知道要查看哪个。

linux header-file

9
推荐指数
1
解决办法
1万
查看次数

linux中的“sys/ioctl.h”头文件

我在 Linux 2.6.32-26-generic

当我查看“ioctl.h”听者文件的 linux 源代码时,我可以看到许多变体。(对于不同的平台,我猜)。IE

./fs/ocfs2/ioctl.h
./fs/btrfs/ioctl.h
./fs/ceph/ioctl.h
./include/config/i2o/config/old/ioctl.h
./include/asm-generic/ioctl.h
./include/linux/hdlc/ioctl.h
./include/linux/ioctl.h
./drivers/video/via/ioctl.h
./drivers/staging/vt6655/ioctl.h
./drivers/staging/vt6656/ioctl.h
./arch/ia64/include/asm/ioctl.h
./arch/h8300/include/asm/ioctl.h
./arch/microblaze/include/asm/ioctl.h
./arch/score/include/asm/ioctl.h
./arch/avr32/include/asm/ioctl.h
./arch/alpha/include/asm/ioctl.h
./arch/x86/include/asm/ioctl.h
./arch/m32r/include/asm/ioctl.h
./arch/mn10300/include/asm/ioctl.h
./arch/sparc/include/asm/ioctl.h
./arch/powerpc/include/asm/ioctl.h
./arch/m68k/include/asm/ioctl.h
./arch/sh/include/asm/ioctl.h
./arch/xtensa/include/asm/ioctl.h
./arch/mips/include/asm/ioctl.h
./arch/s390/include/asm/ioctl.h
./arch/arm/include/asm/ioctl.h
./arch/blackfin/include/asm/ioctl.h
./arch/frv/include/asm/ioctl.h
./arch/parisc/include/asm/ioctl.h
./arch/cris/include/asm/ioctl.h
Run Code Online (Sandbox Code Playgroud)

但我看到该文件被包含为 #include <sys/ioctl.h>

这个映射是如何工作的?

linux c header-file

9
推荐指数
1
解决办法
2万
查看次数

为什么Linux上的limits.h中没有WORD_BIT?

从联机帮助页man limits.h

\n
       {WORD_BIT}\n             Number of bits in an object of type int.\n             Minimum Acceptable Value: 32\n
Run Code Online (Sandbox Code Playgroud)\n

但是,如果我运行一个简单的程序:

\n
#include <limits.h>\n#include <stdio.h>\n\nint main() {\n  printf("%d\\n", WORD_BIT);\n  return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

然而,当尝试使用 gcc ( gcc file.c -o file) 进行编译时,我得到以下信息:

\n
error: \xe2\x80\x98WORD_BIT\xe2\x80\x99 undeclared (first use in this function)\n
Run Code Online (Sandbox Code Playgroud)\n

为什么我的系统上没有定义这个信息,我还能在哪里找到这个信息(在 C 程序中)?

\n

我的系统:

\n
    \n
  • Fedora 36(银蓝色)
  • \n
  • gcc 版本 12.2.1 20220819(红帽 12.2.1-1)(GCC)
  • \n
  • ldd(GNU libc)2.35
  • \n
\n

linux c header-file

9
推荐指数
1
解决办法
1178
查看次数

“linux-headers-3.7.5-1-ARCH”是什么包?

我正在调试一个闭源软件安装程序,它似乎对我的发行版有一些先入为主的概念。未找到 后安装中止apt-get。它尝试运行的命令是:

apt-get -y -q install linux-headers-3.7.5-1-ARCH
Run Code Online (Sandbox Code Playgroud)

我想“包名称”来自/usr/src,唯一的条目是linux-3.7.5-1-ARCH. 有没有人对我应该用 pacman 安装哪个软件包有任何有根据的猜测?

头文件可能会用于编译自定义硬件的驱动程序。

以下是安装日志中的一些相关文本:

注意:Linux 驱动程序必须针对您的 Linux 操作系统当前运行的内核的内核源构建。此脚本为您自动执行此任务。

注意:您必须安装 Linux OS 内核头源文件。如果您计划运行 Jungo 调试监视器,那么您可能还需要安装“compat-libstdc++”和“libpng3”。

您的 Linux 当前正在运行以下内核版本:
3.7.5-1-ARCH

linux compiling arch-linux kernel-modules header-file

8
推荐指数
1
解决办法
6909
查看次数

如何从 Linux Kernel Source 创建 Linux Kernel Headers?

我正在使用 Tiny Core Linux 并尝试安装 Vmware Tools,这当然需要内核头文件 :-)。

看起来他们没有在包中随时可用的内核头文件,但他们确实有内核源代码。因此,我下载了该源代码,并尝试从中创建标题,但我不知道自己在做什么。

在我遇到的谷歌搜索中,它听起来像:

make headers_install
Run Code Online (Sandbox Code Playgroud)

可能会做我需要它做的事情,这实际上是一个正确的 make 目标,但它会出现以下错误:

tc@box:/usr/src/linux-3.16.6$ make headers_install
  CHK     include/generated/uapi/linux/version.h
  HOSTCC  arch/x86/tools/relocs_32.o
In file included from arch/x86/tools/relocs_32.c:1:0:
arch/x86/tools/relocs.h:17:32: fatal error: tools/le_byteshift.h: No such file or directory
 #include <tools/le_byteshift.h>
                                ^
compilation terminated.
scripts/Makefile.host:134: recipe for target 'arch/x86/tools/relocs_32.o' failed
make[1]: *** [arch/x86/tools/relocs_32.o] Error 1
arch/x86/Makefile:181: recipe for target 'archscripts' failed
make: *** [archscripts] Error 2
Run Code Online (Sandbox Code Playgroud)

我在这里是在正确的轨道上,我只是缺少依赖项或其他东西,还是我完全在错误的轨道上?

有人可以给我有关下一步如何进行的任何指示吗?看起来“tools/le_byteshift.h”不知何故丢失了,但我不确定从哪里开始隔离哪个包才能使其正常工作。

如何从源代码制作内核头文件?任何指针都非常感谢!

kernel-modules header-file linux-kernel

7
推荐指数
1
解决办法
7501
查看次数

基于 Debian 的 GNU/Linux 上分离的 LUKS 标头

关于如何在 Stack\xc2\xa0Exchange 上为 LUKS 加密磁盘设置 \xe2\x80\xafup 分离标头\n的信息分散。\xc2\xa0\n通过使用 Google 搜索网络,我发现了有限的信息。\ xc2\xa0\n我发现的一些最好的信息\nis链接到问题的底部。\xc2\xa0\n其中一些很有帮助,甚至对像我这样的\xc2\xa0新手也很有帮助。\xc2\xa0\n但是有些似乎不完整,因此我有动力写这个。\​​xc2\xa0\n请看看你是否可以帮助解决下面的问题,\n使其完整并正常工作。

\n

我假设读者曾经lsblk发现应分离的标头驱动器是sdb,并存储在其他驱动器上sda

\n
\n

方法一:将header制作成分区

\n
    \n
  1. 找出标头的大小,并将分区设置为正确的大小。\xc2\xa0\n\xc2\xa0以下命令将为您提供大量信息。\xc2\xa0\n记下下面旁边的offset数字Data\xc2\xa0segments:

    \n
    $ cryptsetup luksDump /dev/sdb\n...\nData segments:\n  0: crypt\n    offset: 16777216 [bytes]\n    length: (whole device)\n    cipher: aes-xts-plain64\n    sector: 512 [bytes]\n...\n
    Run Code Online (Sandbox Code Playgroud)\n

    执行fdisk(如果没有则安装)\n与$\xc2\xa0fdisk\xc2\xa0/dev/sda.

    \n

    给它命令n并按 Enter。\xc2\xa0\n使用默认分区号创建一个主分区;假设它是X。\xc2\xa0\n选择并记下默认第一个扇区的值\n(假设它是数字M)。\xc2\xa0\n它将提示您输入最后一个扇区;我们称之为K。\xc2\xa0\n要\xc2\xa0找到一个合适的数字K进入(并假设一个扇区的大小为 512\xe2\x80\xafbytes),计算K \xe2\x80\ xaf=\xe2\x80\xaf M \xe2\x80\xaf+\xe2\x80\xaf偏移量/512; 其中offsetluksDump是您在上面使用 .\xc2\xa0 \n命令找到的数字cryptsetup …

debian header-file linux-kernel luks crypttab

7
推荐指数
1
解决办法
932
查看次数