当前位置: 技术问答>linux和unix
UNIX网络编程
来源: 互联网 发布时间:2016-10-02
本文导语: 现在正在学,下载了一个unp13e的代码包。其中make libroute的时候出问题了 说struct sockaddr中没有定义sa_len; 于是我找到usr/include/sys里面的socket.h文件,只找到一个 struct osockaddr的结构体定义,便 在里面加了uint8_t sa_len...
现在正在学,下载了一个unp13e的代码包。其中make libroute的时候出问题了
说struct sockaddr中没有定义sa_len;
于是我找到usr/include/sys里面的socket.h文件,只找到一个 struct osockaddr的结构体定义,便 在里面加了uint8_t sa_len;不过后来还是编译不成功。不知道是什么原因,这个问题大家有遇到过吗,我的系统是ubuntu8.04
该在怎样修改,谢谢!
说struct sockaddr中没有定义sa_len;
于是我找到usr/include/sys里面的socket.h文件,只找到一个 struct osockaddr的结构体定义,便 在里面加了uint8_t sa_len;不过后来还是编译不成功。不知道是什么原因,这个问题大家有遇到过吗,我的系统是ubuntu8.04
该在怎样修改,谢谢!
|
struct sockaddr一般有两种定义:
struct sockaddr {
ushort_t sa_family;
char sa_data[14];
};
或者
struct sockaddr {
uchar_t sa_len;
sa_family_t sa_family;
char sa_data[14];
};
后一种是兼容BSD4.3的,估计该书作者使用的系统是支持这个的。
没用过ubuntu,不知道是否可以在编译核心的时候加什么参数让它兼容BSD4.3。
我觉得你还是改程序,把用到sa_len的地方给去掉看看。
struct sockaddr {
ushort_t sa_family;
char sa_data[14];
};
或者
struct sockaddr {
uchar_t sa_len;
sa_family_t sa_family;
char sa_data[14];
};
后一种是兼容BSD4.3的,估计该书作者使用的系统是支持这个的。
没用过ubuntu,不知道是否可以在编译核心的时候加什么参数让它兼容BSD4.3。
我觉得你还是改程序,把用到sa_len的地方给去掉看看。
|
樓主,你看那一下源碼目錄下的README吧,部分內容如下:
1 QUICK AND DIRTY
2 ===============
3
4 Execute the following from the src/ directory:
5
6 ./configure # try to figure out all implementation differences
7
8 cd lib # build the basic library that all programs need
9 make # use "gmake" everywhere on BSD/OS systems
10
11 cd ../libfree # continue building the basic library
12 make
13
14 cd ../libroute # only if your system supports 4.4BSD style routing sockets
15 make # only if your system supports 4.4BSD style routing sockets
16
17 cd ../libxti # only if your system supports XTI
18 make # only if your system supports XTI
19
20 cd ../intro # build and test a basic client program
21 make daytimetcpcli
22 ./daytimetcpcli 127.0.0.1
1 QUICK AND DIRTY
2 ===============
3
4 Execute the following from the src/ directory:
5
6 ./configure # try to figure out all implementation differences
7
8 cd lib # build the basic library that all programs need
9 make # use "gmake" everywhere on BSD/OS systems
10
11 cd ../libfree # continue building the basic library
12 make
13
14 cd ../libroute # only if your system supports 4.4BSD style routing sockets
15 make # only if your system supports 4.4BSD style routing sockets
16
17 cd ../libxti # only if your system supports XTI
18 make # only if your system supports XTI
19
20 cd ../intro # build and test a basic client program
21 make daytimetcpcli
22 ./daytimetcpcli 127.0.0.1