1. 下载源码,W. Richard Stevens的主页:http://www.kohala.com/start/
wget http://www.kohala.com/start/unpv22e/unpv22e.tar.gz -P /usr/local/src
2. 解压
tar xvf /usr/local/src/unpv22e.tar.gz -C /root/bin
3. 编译库文件
cd /root/bin/unpv22e/
./configure
编辑生成config.h文件,注释以下几行
vi config.h
56 // #define uint8_t unsigned char
57 // #define uint16_t unsigned short
58 // #define uint32_t unsigned int
添加MSG_R和MSG_W定义
vi config.h
66 // add by jcq
67 typedef unsigned long ulong_t;
68 #define MSG_R 0400
69 #define MSG_W 0200
添加_GNU_SOURCE定义
vi config.h
#define _GNU_SOURCE
修改warpunix.c中的MKtemp函数,使用mkstemp函数替换mktemp函数
cd lib
181 void
182 Mktemp(char *template)
183 {
184 if (mkstemp(template) == NULL || template[0] == 0)
185 err_quit("mktemp error");
186 }
编译生成libunpipc.a
cd lib
make
将生成的libunpipc.a复制到/usr/lib中。
[[email protected] myunp2]# vim ftok.c [[email protected] myunp2]# gcc -o ftok ftok.c /tmp/ccxRydhw.o: In function `main‘: ftok.c:(.text+0x18): undefined reference to `err_quit‘ ftok.c:(.text+0x30): undefined reference to `Stat‘ ftok.c:(.text+0x48): undefined reference to `Ftok‘ collect2: 错误:ld 返回 1 [[email protected] myunp2]# gcc -o ftok ftok.c -lunpipc /usr/lib/libunpipc.a(wrapunix.o): In function `Mq_open‘: wrapunix.c:(.text+0x4d8): undefined reference to `mq_open‘ wrapunix.c:(.text+0x4f0): undefined reference to `mq_open‘ /usr/lib/libunpipc.a(wrapunix.o): In function `Mq_close‘: wrapunix.c:(.text+0x52b): undefined reference to `mq_close‘ /usr/lib/libunpipc.a(wrapunix.o): In function `Mq_unlink‘: wrapunix.c:(.text+0x55b): undefined reference to `mq_unlink‘ /usr/lib/libunpipc.a(wrapunix.o): In function `Mq_send‘: wrapunix.c:(.text+0x5a3): undefined reference to `mq_send‘ /usr/lib/libunpipc.a(wrapunix.o): In function `Mq_receive‘: wrapunix.c:(.text+0x5e3): undefined reference to `mq_receive‘ /usr/lib/libunpipc.a(wrapunix.o): In function `Mq_notify‘: wrapunix.c:(.text+0x623): undefined reference to `mq_notify‘ /usr/lib/libunpipc.a(wrapunix.o): In function `Mq_getattr‘: wrapunix.c:(.text+0x653): undefined reference to `mq_getattr‘ /usr/lib/libunpipc.a(wrapunix.o): In function `Mq_setattr‘: wrapunix.c:(.text+0x68b): undefined reference to `mq_setattr‘ /usr/lib/libunpipc.a(wrapunix.o): In function `Sem_open‘: wrapunix.c:(.text+0x9c8): undefined reference to `sem_open‘ wrapunix.c:(.text+0x9e0): undefined reference to `sem_open‘ /usr/lib/libunpipc.a(wrapunix.o): In function `Sem_close‘: wrapunix.c:(.text+0xa1b): undefined reference to `sem_close‘ /usr/lib/libunpipc.a(wrapunix.o): In function `Sem_unlink‘: wrapunix.c:(.text+0xa4b): undefined reference to `sem_unlink‘ /usr/lib/libunpipc.a(wrapunix.o): In function `Sem_init‘: wrapunix.c:(.text+0xa8b): undefined reference to `sem_init‘ /usr/lib/libunpipc.a(wrapunix.o): In function `Sem_destroy‘: wrapunix.c:(.text+0xabb): undefined reference to `sem_destroy‘ /usr/lib/libunpipc.a(wrapunix.o): In function `Sem_wait‘: wrapunix.c:(.text+0xaeb): undefined reference to `sem_wait‘ /usr/lib/libunpipc.a(wrapunix.o): In function `Sem_trywait‘: wrapunix.c:(.text+0xb1c): undefined reference to `sem_trywait‘ /usr/lib/libunpipc.a(wrapunix.o): In function `Sem_post‘: wrapunix.c:(.text+0xb5b): undefined reference to `sem_post‘ /usr/lib/libunpipc.a(wrapunix.o): In function `Sem_getvalue‘: wrapunix.c:(.text+0xb93): undefined reference to `sem_getvalue‘ /usr/lib/libunpipc.a(wrapunix.o): In function `Shm_open‘: wrapunix.c:(.text+0xccc): undefined reference to `shm_open‘ /usr/lib/libunpipc.a(wrapunix.o): In function `Shm_unlink‘: wrapunix.c:(.text+0xd0b): undefined reference to `shm_unlink‘ collect2: 错误:ld 返回 1 [[email protected] myunp2]# gcc -lrt -o ftok ftok.c -lunpipc [[email protected] myunp2]# man mq_open Cannot open the message catalog "man" for locale "zh_CN.UTF-8" (NLSPATH="/usr/share/locale/%l/LC_MESSAGES/%N") Formatting page, please wait...
出现上面的错误,使用gcc 加选项-lrt解决。