当前位置: 技术问答>linux和unix
tcp/ip上的sock程序问题
来源: 互联网 发布时间:2016-07-02
本文导语: 从Steven的主页上下载的sock程序,make只有发现好多错误。 gcc -ansi -Wall -Dsun -D__STDC__=0 -c -o tellwait.o tellwait.c :2:1: warning: "__STDC__" redefined tellwait.c:6: error: syntax error before "newmask" tellwait.c:6: warning: type defaults...
从Steven的主页上下载的sock程序,make只有发现好多错误。
gcc -ansi -Wall -Dsun -D__STDC__=0 -c -o tellwait.o tellwait.c
:2:1: warning: "__STDC__" redefined
tellwait.c:6: error: syntax error before "newmask"
tellwait.c:6: warning: type defaults to `int' in declaration of `newmask'
tellwait.c:6: warning: type defaults to `int' in declaration of `oldmask'
tellwait.c:6: warning: type defaults to `int' in declaration of `zeromask'
tellwait.c:6: warning: data definition has no type or storage class
tellwait.c: In function `TELL_WAIT':
tellwait.c:23: warning: implicit declaration of function `sigemptyset'
tellwait.c:26: warning: implicit declaration of function `sigaddset'
tellwait.c:29: warning: implicit declaration of function `sigprocmask'
tellwait.c:29: error: `SIG_BLOCK' undeclared (first use in this function)
tellwait.c:29: error: (Each undeclared identifier is reported only once
tellwait.c:29: error: for each function it appears in.)
tellwait.c: In function `TELL_PARENT':
tellwait.c:36: warning: implicit declaration of function `kill'
tellwait.c: In function `WAIT_PARENT':
tellwait.c:43: warning: implicit declaration of function `sigsuspend'
tellwait.c:47: error: `SIG_SETMASK' undeclared (first use in this function)
tellwait.c: In function `WAIT_CHILD':
tellwait.c:65: error: `SIG_SETMASK' undeclared (first use in this function)
make: *** [tellwait.o] 错误 1
请问下有人有能在redhat4.0下编译通过的程序吗?有的话给我一份,不胜感激。
gcc -ansi -Wall -Dsun -D__STDC__=0 -c -o tellwait.o tellwait.c
:2:1: warning: "__STDC__" redefined
tellwait.c:6: error: syntax error before "newmask"
tellwait.c:6: warning: type defaults to `int' in declaration of `newmask'
tellwait.c:6: warning: type defaults to `int' in declaration of `oldmask'
tellwait.c:6: warning: type defaults to `int' in declaration of `zeromask'
tellwait.c:6: warning: data definition has no type or storage class
tellwait.c: In function `TELL_WAIT':
tellwait.c:23: warning: implicit declaration of function `sigemptyset'
tellwait.c:26: warning: implicit declaration of function `sigaddset'
tellwait.c:29: warning: implicit declaration of function `sigprocmask'
tellwait.c:29: error: `SIG_BLOCK' undeclared (first use in this function)
tellwait.c:29: error: (Each undeclared identifier is reported only once
tellwait.c:29: error: for each function it appears in.)
tellwait.c: In function `TELL_PARENT':
tellwait.c:36: warning: implicit declaration of function `kill'
tellwait.c: In function `WAIT_PARENT':
tellwait.c:43: warning: implicit declaration of function `sigsuspend'
tellwait.c:47: error: `SIG_SETMASK' undeclared (first use in this function)
tellwait.c: In function `WAIT_CHILD':
tellwait.c:65: error: `SIG_SETMASK' undeclared (first use in this function)
make: *** [tellwait.o] 错误 1
请问下有人有能在redhat4.0下编译通过的程序吗?有的话给我一份,不胜感激。
|
如果在linux下的话,楼主可以尝试自己写socket的应用程序,不需要用别人的。毕竟socket的函数接口已经有了。除非想要看下socket的具体实现代码,那可能需要借鉴一下老外的。
|
其实,楼主发现错误的时候不要惊慌,耐心的一个个问题的解决,一般都是由于语法问题、编译参数问题导致。对于语法和编译参数(makefile文件)可以通过man 函数名轻松的找到函数的用法,以及需要用到哪些头文件、需要加载哪些lib文件(即-l参数)
首先,你需要集中关注error类型的错误,
比如,看你的第一处:tellwait.c:6: error: syntax error before "newmask"
很明显,是提示第6行在newmask前面有语法错误,相信一行代码也没多少内容,楼主可以仔细观察看看是不是因为注释的格式问题,有的编译环境不支持//这样的注释,在网上或者其他地方拷贝的程序往往很少通过真正的编译环境去验证,因此可能会出现全角字符的情况,向“,”、“;”、“:”、“?”这些在编译环境中都不支持的,需要替换成“,”、“;”、“:”、“?”,或者是常用的函数缺少字符啊,例如将memcpy写成了memcy之类,还有一种情况是从别的系统移植过来的程序,可能不支持该函数,那么就需要楼主用点心去比较各个环境的具体函数了。
有些宏定义在不同的操作系统也是不一样的。楼主不妨将代码贴出来看看。
首先,你需要集中关注error类型的错误,
比如,看你的第一处:tellwait.c:6: error: syntax error before "newmask"
很明显,是提示第6行在newmask前面有语法错误,相信一行代码也没多少内容,楼主可以仔细观察看看是不是因为注释的格式问题,有的编译环境不支持//这样的注释,在网上或者其他地方拷贝的程序往往很少通过真正的编译环境去验证,因此可能会出现全角字符的情况,向“,”、“;”、“:”、“?”这些在编译环境中都不支持的,需要替换成“,”、“;”、“:”、“?”,或者是常用的函数缺少字符啊,例如将memcpy写成了memcy之类,还有一种情况是从别的系统移植过来的程序,可能不支持该函数,那么就需要楼主用点心去比较各个环境的具体函数了。
有些宏定义在不同的操作系统也是不一样的。楼主不妨将代码贴出来看看。