首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以使用gnulib-tool获取netinet/in.h吗?

可以使用gnulib-tool获取netinet/in.h吗?
EN

Stack Overflow用户
提问于 2016-05-30 15:55:03
回答 1查看 215关注 0票数 1

我在某种程度上遇到了与Getting started with gnulib on MinGW and not familiar (enough) with autotools相同的问题--即希望在MinGW Windows项目中包含像netinet/in.h这样的头文件;这就是我第一次听说gnulib的地方。

正如上面的帖子所指出的,gnulib的主要目的是用正确的文件对现有的autoconf项目进行“修补”;然而,我所处理的项目的构建系统我并不是很了解-所以一开始,我只是想复制头文件。

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

代码语言:javascript
复制
gnulib_git$ find . -name '*.h' | grep netinet
./lib/netinet_in.in.h

实际上,这个文件有像@PRAGMA_SYSTEM_HEADER@这样的东西,我只能假设它们是一些宏。

所以,我发现有一个命令--create-testdir,所以我尝试这样做:

代码语言:javascript
复制
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上尝试过了,它运行得很好,但是:

代码语言:javascript
复制
$ find /tmp/AA -name '*.h' | grep netinet
/tmp/AA/gllib/netinet_in.in.h

..。我仍然没有得到任何标题(其中仍然有宏)?事实证明我不能在我的MinGW-w64上尝试这个,因为那里没有aclocal程序...

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

EN

回答 1

Stack Overflow用户

发布于 2017-02-13 11:55:41

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

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37520407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档