Xcode下配置UNIX网络编程(UNP)环境

来源:互联网 发布:云技术与大数据 编辑:程序博客网 时间:2024/05/21 20:29

由于自己配置unp相关头文件时遇到了很多问题,因此记录下Xcode配置unp开发环境的小技巧。apue开发环境也是类似的。

  1. 首先在Xcode下创建一个项目,选择Command Line Tool,点击next,填写Product Name和Organization Identifier(随意),选择Language为C。至此项目完毕。
    这里写图片描述
    ——》
    这里写图片描述
  2. 从http://www.unpbook.com/src.html下载本书需要用到的源代码,解压至自定义文件夹。我这里讲文件夹解压到了/Users/hupac/Downloads/unpv13e,这个路径之后需要用到。然后选择项目的Build
    Settings,在Header Search
    Path中填入/Users/hupac/Downloads/unpv13e/lib,因为lib文件夹中基本包含了本书需要用到的头文件。

    这里写图片描述

  3. 如果此时运行第一章中的daytimetcpcli.c仍然会报错,因为没有导入config.h。因此,在unpv13e文件夹中的sparc64-unknown-freebsd5.1文件夹下找到config.h,并将config.h复制到unpv13e/lib(也就是刚才填写的Header Search Path路径下),并在unp.h中将#include “../config.h”修改为#include “config.h”。这样是让unp.h能够在本文件夹中找到对应的config.h。

  4. 至此unp相关的基本的头函数已经导入,但是在unp.h中只声明了相关的函数名,而函数源代码需要在.c文件中实现。例如,err_sys()函数,需要在编程时#include “error.c”(如果将这句代码写在unp.h中程序会报错,但我并不知道为什么会这样23333)。再例如,unp.h中声明了socket相关的包裹函数名,而函数是在wrapsock.c中具体实现的,因此在编程时需要#include “wrapsock.c”。因此,在具体编程时,需要根据自己需求来导入相关的.c文件(这种方法不太好,但是目前没找到更好的解决方法)。

  5. 针对第一章中daytimetcpsrv.c程序的讨论。因为daytimetcpsrv.c是获取时间的服务器程序,代码中用到了bind函数的包裹函数Bind,其中有绑定地址和端口操作,而这些操作需要ROOT权限的支持。解决方法:利用管理员权限启动Xcode即可:
    sudo /Applications/Xcode.app/Contents/MacOS/Xcode .
    总结:这是我目前利用Xcode编写unp上的示例程序时遇到的问题,现在分享给大家,接下来我会继续更新之后的尝试中发现的问题。

阅读全文
0 0