sys/_types.h 中的 cygwin 编译错误
我正在尝试使用 cywin 在 win32 机器上构建一些 linux 代码。
我在 ym 编译器中收到以下 VS.net 2003 错误:
“c:\cygwin\usr\include\sys_types.h(15): 错误 C2144: 语法错误: '__int64' 前面应该有 ';' "
和
c:\cygwin\usr\include\sys_types.h(15): error C2501: 'extension' : 缺少存储类或类型说明
符 代码行是
__extension__ typedef long long _off64_t;
显然我在这里缺少一些东西,但是我以前从未使用过 cygwin,这让我很烦恼,
出于一些原因,我希望至少能够在我的 win32 机器上编译我的 CPP 文件
(这只是数百个错误中的前两个错误)
,谢谢, 蒂姆
编辑:
我选择作为答案的简单解决方法 - 尽管我确实明白这并不像使用 gcc 编译那样完整或理想... 这是一个快速而肮脏的编译,以便我可以在尝试与 Linux 机器集成之前使用我熟悉的工具。 (噢,跨平台开发的乐趣)
到目前为止,我已经对每个答案进行了投票,并感谢您的帮助)
I am trying to use cywin to get some linux code building on a win32 machine.
I get the following VS.net 2003 error in ym compiler:
"c:\cygwin\usr\include\sys_types.h(15): error C2144: syntax error : '__int64' should be preceded by ';'
"
and
c:\cygwin\usr\include\sys_types.h(15): error C2501: 'extension' : missing storage-class or type specifiers
The code line is
__extension__ typedef long long _off64_t;
Obviously I am missing something here but I have never used cygwin before and this is killing me.
I want to be able to at least compile my CPP files on my win32 machine for a few reasons.
(this is just the first two errors of hundreds it looks like)
thanks,
tim
EDIT:
the simple workaround I have chosen as the answer - though I do understand that is not as complete or as desirable as using gcc to compile...
This is a quick and dirty compilation so that I can use my familiar tools before trying to integrate with linux machines. (oh the joys of cross-platform development)
I've voted up each of those answers so far and appreciate the help)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我可能是错的,但是 cygwin 头文件可以专门用于使用 cygwin gcc 进行编译,而不是 Visual Studio。 尝试在 cygwin 中使用 gcc/g++ 进行编译。
编辑:我可能可以使用 Visual Studio,此页面(对于另一个项目)似乎暗示您可以使用 vc++/cygwin 编译某些内容。 http://opensg.vrsource.org/trac/wiki/BuildVS2005Cygwin。
您可能想检查一下。
EDIT2:另请参阅: http://www.coin-or.org/OS /documentation/node14.html
EDIT3:我猜最好的粗略操作是确保 Visual Studio 首先搜索标准 Windows 路径。 因此,如果有一个系统
,它可能比 cygwin 版本更受青睐。I could be wrong, but the cygwin headers could be made specifically for compiling using the cygwin gcc, not visual studio. Try compiling using gcc/g++ in cygwin.
EDIT: I may be possible to use Visual Studio, this page (for another project) seems to imply that you can compile something with vc++/cygwin. http://opensg.vrsource.org/trac/wiki/BuildVS2005Cygwin.
You may want to check it out.
EDIT2: Also See: http://www.coin-or.org/OS/documentation/node14.html
EDIT3: I would guess that the best coarse of action would be to make sure that visual studio searches the standard windows paths first. So if there is a system
<sys/types.h>
, that may be preferred over the cygwin version.__extension__
关键字是一个 gcc 扩展,用于表示使用 gcc 扩展的代码(在本例中为long long
),因此它不会在迂腐模式下崩溃。 如果可以,请尝试使用 gcc 编译代码。The
__extension__
keyword is a gcc extension to denote code that uses gcc extensions (in this caselong long
), so it doesn't blow up in pedantic mode. If you can, try compiling your code with gcc.在 C++ 中,任何前面(或包含)双下划线的名称都是为特定实现保留的名称,在本例中为 GNU C++。 MS C++ 将使用其他名称。 底线 - 如果源使用此类名称,则无法使用 MS C++ 编译 g++ 源,反之亦然。
In C++, any name preceded (or containing) a double underscore is a name reserved for a particular implementation, in this case GNU C++. MS C++ will use other names. Bottom line - you can't compile g++ sources with MS C++, or vice versa, if the sources use such names.
我认为扩展宏可能没有定义。 您可能需要在 cygwin 标头目录上进行文本搜索,看看是否是这种情况。 如果是这样,请确保您的标头搜索路径定义正确,等等。
I think that the extension macro may not be defined. You may want to do a text search on your cygwin header dir to see if this is the case. If so, make sure that you header search path is defined correctly, etc.