我最终遇到了与 MinGW 上的 gnulib 入门相同的问题,并且对 autotools 不熟悉(足够) ——也就是说,想要netinet/in.h
在 MinGW Windows 项目中包含标头;那是我第一次听说的地方gnulib
。
正如上面的帖子所述,主要目的gnulib
是用正确的文件对现有autoconf
项目进行“修补”;但是,我使用的项目的构建系统我不太了解 - 所以起初,我只想复制标题。
现在,我不太确定,但在我看来,好像gnulib
会根据运行它的系统生成这些标头 - 这就是为什么它没有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
,或者在此过程中如何/何时可以期望获得实际的标头(以及它是否依赖于主机操作系统)?