'SIGPIPE': luasocket-2.0.2 中未声明的标识符
'SIGPIPE': undeclared identifier in luasocket-2.0.2
我正在尝试编译 luasocket-2.0.2 (or: luasocket) 但当我尝试这样做时,一些宏似乎未定义。即:
identifier "SIGPIPE" is undefined
identifier "F_GETFL" is undefined
identifier "O_NONBLOCK" is undefined
identifier "F_SETFL" is undefined
如果我 google 这个我看到 signal.h 必须包括在内。我没有更改代码或任何内容,如您所料,包含 headers:
#include <string.h>
#include <signal.h>
#include "socket.h"
不太确定我在这里遗漏了什么。
我试着为 Windows 编译这个。
编译器标志:
/GS /analyze- /W3 /Zc:wchar_t /I"E:\git\luasocket-2.0.2\../luaext-linker/include" /ZI /Gm /Od /Fd"mime\Debug\vc140.pdb" /Zc:inline /fp:precise /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "MIME_EXPORTS" /D "MIME_API=__declspec(dllexport)" /D "_WINDLL" /D "_MBCS" /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /Oy- /MDd /Fa"mime\Debug\" /EHsc /nologo /Fo"mime\Debug\" /Fp"mime\Debug\mime.pch"
socket项目usocket.c出现错误:
"SIGPIPE" is undefined socket e:\git\luasocket-2.0.2\src\usocket.c 80
...
好的,它在你的编译标志中。我无法从这里查看您的系统,但 /I
标志是它发生的地方,问题是 signal.h
不在任何这些目录中。
这可能是软件包本身的某种错误。将此报告给开发人员,同时找到 signal.h
并将其复制到其中一个包含目录中作为解决方法。
似乎 usocket.c
是特定于 Unix 的源代码。
/*=========================================================================*\
* Socket compatibilization module for Unix
* LuaSocket toolkit
您不应该尝试将其包含在以 Win 为目标的构建中(除非您使用的是 Cygwin)。 socket.vcxproj
也没有在源集中提到这个文件。这证实了之前的建议。
如果您决定通过 win32.cmd
脚本构建它 - 正确的前缀路径,因为脚本使用硬编码:
make LUAPREFIX_win32='c:\cygwin\home\diego\vc12' LUAV=5.1 PLAT=win32 LUALIBNAME_win32=lualib.lib PLATFORM_win32=Debug install-both
我正在尝试编译 luasocket-2.0.2 (or: luasocket) 但当我尝试这样做时,一些宏似乎未定义。即:
identifier "SIGPIPE" is undefined
identifier "F_GETFL" is undefined
identifier "O_NONBLOCK" is undefined
identifier "F_SETFL" is undefined
如果我 google 这个我看到 signal.h 必须包括在内。我没有更改代码或任何内容,如您所料,包含 headers:
#include <string.h>
#include <signal.h>
#include "socket.h"
不太确定我在这里遗漏了什么。
我试着为 Windows 编译这个。
编译器标志:
/GS /analyze- /W3 /Zc:wchar_t /I"E:\git\luasocket-2.0.2\../luaext-linker/include" /ZI /Gm /Od /Fd"mime\Debug\vc140.pdb" /Zc:inline /fp:precise /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "MIME_EXPORTS" /D "MIME_API=__declspec(dllexport)" /D "_WINDLL" /D "_MBCS" /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /Oy- /MDd /Fa"mime\Debug\" /EHsc /nologo /Fo"mime\Debug\" /Fp"mime\Debug\mime.pch"
socket项目usocket.c出现错误:
"SIGPIPE" is undefined socket e:\git\luasocket-2.0.2\src\usocket.c 80
...
好的,它在你的编译标志中。我无法从这里查看您的系统,但 /I
标志是它发生的地方,问题是 signal.h
不在任何这些目录中。
这可能是软件包本身的某种错误。将此报告给开发人员,同时找到 signal.h
并将其复制到其中一个包含目录中作为解决方法。
似乎 usocket.c
是特定于 Unix 的源代码。
/*=========================================================================*\
* Socket compatibilization module for Unix
* LuaSocket toolkit
您不应该尝试将其包含在以 Win 为目标的构建中(除非您使用的是 Cygwin)。 socket.vcxproj
也没有在源集中提到这个文件。这证实了之前的建议。
如果您决定通过 win32.cmd
脚本构建它 - 正确的前缀路径,因为脚本使用硬编码:
make LUAPREFIX_win32='c:\cygwin\home\diego\vc12' LUAV=5.1 PLAT=win32 LUALIBNAME_win32=lualib.lib PLATFORM_win32=Debug install-both