当前位置: 技术问答>linux和unix
大侠,请解释一下这个编译问题,谢谢!
来源: 互联网 发布时间:2016-02-01
本文导语: //source code -- server.c #include #include #include #include int main(int argc, char *argv[]) { int nCount; nCount = sizeof(sockaddr); printf("%dn",nCount); nCount = sizeof(sockaddr_in); printf("%dn",nCount); } 说...
//source code -- server.c
#include
#include
#include
#include
int main(int argc, char *argv[])
{
int nCount;
nCount = sizeof(sockaddr);
printf("%dn",nCount);
nCount = sizeof(sockaddr_in);
printf("%dn",nCount);
}
说明:平台:ubuntu 7.04 desktop; gcc 版本 4.1.2
命令行: gcc -o server ./server.c -lsocket -lnsl
或 gcc -o server ./server.c -lsocket
提示:
sockaddr’ 未声明
sockaddr_in’ 未声明
命令行:g++ -o server ./server.c 编译通过
问题是,gcc编译时有什么问题吗?gcc编译其他简单程序也能通过
#include
#include
#include
#include
int main(int argc, char *argv[])
{
int nCount;
nCount = sizeof(sockaddr);
printf("%dn",nCount);
nCount = sizeof(sockaddr_in);
printf("%dn",nCount);
}
说明:平台:ubuntu 7.04 desktop; gcc 版本 4.1.2
命令行: gcc -o server ./server.c -lsocket -lnsl
或 gcc -o server ./server.c -lsocket
提示:
sockaddr’ 未声明
sockaddr_in’ 未声明
命令行:g++ -o server ./server.c 编译通过
问题是,gcc编译时有什么问题吗?gcc编译其他简单程序也能通过
|
头文件顺序有问题,改成下面试试:
#include
#include
#include
#include
#include
#include
#include
#include
|
错了,是少了struct 关键字
|
头文件的问题吧,
|
#include
有这个头文件,而且这个头文件是GCC编译器能找到的默认文件路径。。
所以在编译的时候不需要加-lsocket
有这个头文件,而且这个头文件是GCC编译器能找到的默认文件路径。。
所以在编译的时候不需要加-lsocket