gpt4 book ai didi

linux - 可以使用 gnulib 工具获取 netinet/in.h 吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:24:32 25 4
gpt4 key购买 nike

我最终遇到了与 Getting started with gnulib on MinGW and not familiar (enough) with autotools 相同的问题- 也就是说,想要在 MinGW Windows 项目中包含像 netinet/in.h 这样的 header ;这就是我第一次听说 gnulib 的地方。

正如上面的帖子所述,gnulib 的主要目的是用正确的文件“修补”现有的 autoconf 项目;然而,我正在处理一个我不太了解其构建系统的项目 - 所以一开始,我想到的只是复制 header 。

现在,我不太确定,但在我看来,gnulib 会根据其运行的系统生成这些 header - 这就是为什么不包含 netinet/in.h 逐字,它实际上包含:

gnulib_git$ find . -name '*.h' | grep netinet
./lib/netinet_in.in.h

确实,这个文件有类似@PRAGMA_SYSTEM_HEADER@的东西,我只能假设是一些宏。

所以,我发现有一个命令--create-testdir,于是我试了一下:

rm -rf /tmp/AA # erase previous, else it won't run
./gnulib-tool --create-testdir --dir=/tmp/AA getsockname getsockopt setsockopt socket socketlib sockets socklen sys_socket arpa_inet inet_ntop inet_pton netinet_in
cd /tmp/AA
./configure
make

我已经在 Linux 上试过了,它运行良好,但是:

$ find /tmp/AA -name '*.h' | grep netinet
/tmp/AA/gllib/netinet_in.in.h

...我仍然没有得到任何标题(而且里面仍然有宏)?结果我无法在我的 MinGW-w64 上尝试这个,因为那里没有 aclocal 程序...

那么谁能解释一下是否可以使用 --create-testdir 生成完整的 header ,或者在这个过程中如何/何时可以期望获得实际的 header (以及它是否是主机操作系统依赖)?

最佳答案

当 gnulib 发现系统的同名包含文件功能齐全时,它不会创建自己的 netinet/in.h 文件 - 幸运的是,在 glibc 系统上就是这种情况。

但是在其他平台上,比如 mingw,可能会有一个由 gnulib 创建的 netinet/in.h 文件,它会引用系统的同名包含文件。是的,@PRAGMA_SYSTEM_HEADER@ 是使这成为可能的宏观的一部分。

您不需要在目标系统(此处:mingw)上安装 Autotools。 GNU 构建系统的想法是您在装有 Autotools 的机器上创建 configureMakefile.inconfig.h 文件。然后您可以将生成的包传输到目标机器。在目标机器上,根据 GNU standards ,您只需要基本的 shell 实用程序(例如 coreutils、sed、gawk)。

关于linux - 可以使用 gnulib 工具获取 netinet/in.h 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37520407/

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