cygwin 下的西语言开发笔记

最近发现,虽然以前做了很多东西,也解决了很多问题,看似也学会了解决很多问题。而实际上,因为有些东西是很少用到的,所以很容易就会忘记。等到某天想用的时候,虽然记得以前知道怎么做,也成功做过,但是到现在就想不起细节到底是怎样的了。所以看来啊,还是应该把这些东西记起来比较好。
于是这几天在cygwin下弄libantixunlei,先记下这些东西吧。如果以后再有新发现的话,继续追加。
顺便说个趣事,我用fork()函数产生子进程,产生到300多个的时候,Windows挂掉了,表现为图形界面凝固,怎么动都没反应,只能冷启。


让cygwin下gcc编译出来的程序不依赖cygwin的运行库
加上gcc编译选项:-mno-cygwin
不过加上这个选项,然后又使用了一些POSIX函数的话,编译时就有可能冒出一些诡异的语法错误。偶印象最深的就是说pthread.h文件里面的函数定义不对。偶仔细看了一下,发现大多出报错的都是函数参数只有类型没有形参名。这个问题没有深究,反正我暂时还不需要编译在windows下使用的用到POSIX函数的东西。

就算没有使用 -mno-cygwin 选项,也会出现上面提到的那些诡异的语法错误
那就把gcc改成gcc-3就行了。虽然看cygwin目录里面,gcc.exe是一个到gcc-3.exe的符号链接。但是,只要直接使用gcc-3而不使用gcc就能顺利编译了。

调用 msgsnd 函数失败,提示 Bad system call
这是因为在cygwin下,消息队列之类的东西需要由cygserver来处理。安装方法如下:
运行/usr/bin/cygserver-config,然后cygwin就会注册一个名为cygserver的Windows服务。启动该服务,接着,设置环境变量CYGWIN=server,然后再运行程序就可以了

net start cygserver
set CYGWIN=server
/* 然后就运行你的程序吧 */
本文发表于 技术向,并添加了 , , , 标记。保存永久链接到书签。

发表评论

邮箱地址不会被公开。