搭建《unix网络编程》那本书所需的环境 + 可能遇到的问题
2013-11-03 19:21
381 查看
《Unix NetWork Programming》(Unix网络编程)—环境搭建(解决unp.h等源码编译问题)
下面开始用简单但典型的客户端和服务器端程序说明如何进行网络编程。这一小节讲的是客户端,一个用来连接并读取服务器发送来的时间的客户端。这里涉及到了编写代码,因此要
搭建《unix网络编程》那本书所需的环境
我用的是ubuntu11.10系统:
1,安装编译器,为了齐全还是安装一下build-essential
[python] view
plaincopy
sudo apt-get install build-essential
2,下载本书的头文件及示例源码
点此下载unpv13e.tar.gz http://ishare.iask.sina.com.cn/f/13238521.html
3,解压unpv13e.tar.gz后进入目录查看README,然后可以按照里面提示操作,不过会遇到问题
第一步:在终端中进入upnv13e目录,然后执行代码:
[python] view
plaincopy
chmod u+x configure
./configure
第二步:进入lib目录下执行make:
[python] view
plaincopy
cd lib
make
第三步:建立基础类库:
[python] view
plaincopy
cd ../libfree # continue building the basic library
make
第四步:编译函数库:
[python] view
plaincopy
cd ../libgai # the getaddrinfo() and getnameinfo() functions
make
4,将生成的libunp.a静态库复制到/usr/lib/和/usr/lib64/中。
[html] view
plaincopy
cd .. //回到unpv12e目录
[html] view
plaincopy
sudo cp libunp.a /usr/lib
sudo cp libunp.a /usr/lib64
5,修改unp.h并将其和config.h拷贝到/usr/include中,为了以后include方便
[python] view
plaincopy
gedit lib/unp.h //将unp.h中#include "../config.h"修改为#include "config.h"
[python] view
plaincopy
sudo cp lib/unp.h /usr/include
sudo cp config.h /usr/include
6,编译源代码
[python] view
plaincopy
cd ./intro
gcc daytimetcpcli.c -o daytimetcpcli -lunp
然后发现报错:
daytimetcpcli.c:1:17: 致命错误: /usr/include/unp.h:权限不够
解决方法:
1.把 /usr/include/unp.h文件删掉:
sudo rm /usr/include/unp.h
2.进入unpv13e解压目录下的lib文件里面找到unp.h,然后右键查看属性,选中权限,修改它的权限为读写,或只读
3.重新将unp.h文件拷贝一次:
sudo cp lib/unp.h /usr/include
ok,按照第6步的命令重新编译,pass,成功了
跟普通的编译不一样的是要在最后加上刚才那个链接库,-l参数加上刚才那个libunp.a去掉lib和后面的.a。最后得到参数-lunp。
7,编写程序
以后编写完的程序安装6中的代码编译就行了,然后代码可以完全跟书上的一样。代码编辑器或IDE等就按自己的喜好来选了。这个网上很多c语言编程环境搭建教程。
我选择命令行用vim编写程序。我的vim的使用和
Div环境方法:点击打开链接 http://blog.csdn.net/szu_tanglanting/article/details/17439005
在进行unix进程通信的安装中遇到
[szu@localhost lib]$ make
gcc -g -O2 -D_REENTRANT -Wall -D_POSIX_PTHREAD_SEMANTICS -c -o daemon_inetd.o daemon_inetd.c
In file included from /usr/include/netinet/in.h:25,
from /usr/include/rpc/types.h:91,
from /usr/include/rpc/rpc.h:39,
from unpipc.h:116,
from daemon_inetd.c:2:
/usr/include/stdint.h:49: 错误:重复的‘unsigned’
/usr/include/stdint.h:49: 错误:声明指定了两个以上的数据类型
/usr/include/stdint.h:50: 错误:重复的‘unsigned’
/usr/include/stdint.h:50: 错误:重复的‘short’
/usr/include/stdint.h:52: 错误:重复的‘unsigned’
/usr/include/stdint.h:52: 错误:声明指定了两个以上的数据类型
make: *** [daemon_inetd.o] 错误 1
只要在config.h中注释掉在源代码文件夹中,运./configure进行配置后,修改源文件夹下的config.h文件,注释掉此文件中的56,57,58行关于多种类型的定义,保存后再进入lib子目录中执行make命令进行编译即可。
56//#define uint8_t unsigned char /* <sys/types.h> */
57 //#define uint16_t unsigned short /* <sys/types.h> */
58 //#define uint32_t unsigned int
接下来应该和unix环境编程一样环境一样从4步骤开始的步骤一样拷贝静态库函数和头文件等等!
但是编译的时候格式是:
gcc constumer.c -lunpipc -lrt -lpthread (我是在他的/home/szu/unixPIC/unpv22e/中的Make.defines的到提示的。)
应该就通过编译了:
[szu@localhost jincheng]$ ./a.out 10000 5
count[0] = 0
count[1] = 0
count[2] = 116
count[3] = 9882
count[4] = 2
如果还是不能够成功那么就直接在那个源码里面测试了。如:/home/szu/unixPIC/unpv22e/mutex
对里面的代码进行编译 make 然后运行。
相关文章推荐
- 搭建《unix网络编程》那本书所需的环境 + 可能遇到的问题
- ubuntu13.10(楼主是在麒麟系统下测试的)下ns2环境搭建和可能遇到的问题及解决办法
- Fedora 15搭建LAMP环境中可能遇到的问题
- WampServer搭建php环境可能遇到的问题
- [转]Fedora 15搭建LAMP环境中可能遇到的问题
- 手机自动化测试(5)--Appium环境搭建、可能遇到的问题以及附属工具
- CUnit开发环境搭建过程可能遇到的一些问题及解决方法
- QC测试数据库环境搭建和恢复注意事项及可能遇到的问题解答
- 搭建LNMP环境过程及可能遇到的问题
- lvs+keepalived+mha高可用环境搭建过程中遇到的问题
- 自动化环境搭建遇到问题
- 搭建vs2008+wxWidgets环境时遇到的问题
- ubuntu16.04搭建LAMP环境以及遇到的问题
- Android开发环境搭建时遇到问题的解决方法
- Win10与VS2015搭建内核驱动开发环境遇到的问题
- Android安装之环境搭建过程所遇到的问题(Mac)
- 【转】https,https的本地测试环境搭建,asp.net结合https的代码实现,http网站转换成https网站之后遇到的问题
- 记录一次配置unix网络编程环境的过程和遇到的问题
- VPS环境搭建中使用中遇到的问题
- VS + Libmodbus + QT 环境搭建遇到的几个新手问题