unbuntu下eclipse的unp.h和apue.h

最终效果:

unbuntu下eclipse的unp.h和apue.h_第1张图片

可以看见最后都是以#include包含进来的,看上去比较整洁

我的目录是/home/lbs/Cspace

所有的项目都创建在齐下,比如/home/lbs/Cspace/UNP-SOC

好了,先把unp.h解决:

下载地址http://www.apuebook.com/src.tar.gz 

我直接下载到/home/lbs/Downloads/下,

cd /home/lbs/Downloads

tar xf src.tar.gz

cd apue.3e

修改Make.defines.linux文件中,
WKDIR=/home/lbs/Downloads/apue.3e

make

这样就可以编译通过了,复制apue.3e/include/apue.h到/usr/include下,
apue.3e/lib/libapue.a 到/usr/lib/和 /usr/lib64下。


解决myerr.h:

里面包含了err_*之类的函数实现。

cd /usr/include

vim myerr.h

把一下代码复制进去,保存,就ok了

#include "apue.h"
#include <errno.h> /* for definition of errno */
#include <stdarg.h> /* ISO C variable aruments */

static void err_doit(int, int, const char *, va_list);

/*
* Nonfatal error related to a system call.
* Print a message and return.
*/

void
err_ret(const char *fmt, ...)
{
    va_list ap;

    va_start(ap, fmt);
    err_doit(1, errno, fmt, ap);
    va_end(ap);
}

/*
* Fatal error related to a system call.
* Print a message and terminate.
*/

void
err_sys(const char *fmt, ...)
{
    va_list ap;

    va_start(ap, fmt);
    err_doit(1, errno, fmt, ap);
    va_end(ap);
    exit(1);
}

/*
* Fatal error unrelated to a system call.
* Error code passed as explict parameter.
* Print a message and terminate.
*/

void
err_exit(int error, const char *fmt, ...)
{
    va_list ap;

    va_start(ap, fmt);
    err_doit(1, error, fmt, ap);
    va_end(ap);
    exit(1);
}

/*
* Fatal error related to a system call.
* Print a message, dump core, and terminate.
*/

void
err_dump(const char *fmt, ...)
{
    va_list ap;

    va_start(ap, fmt);
    err_doit(1, errno, fmt, ap);
    va_end(ap);
    abort(); /* dump core and terminate */
    exit(1); /* shouldn't get here */
}

/*
* Nonfatal error unrelated to a system call.
* Print a message and return.
*/

void
err_msg(const char *fmt, ...)
{
    va_list ap;

    va_start(ap, fmt);
    err_doit(0, 0, fmt, ap);
    va_end(ap);
}

/*
* Fatal error unrelated to a system call.
* Print a message and terminate.
*/

void
err_quit(const char *fmt, ...)
{
    va_list ap;

    va_start(ap, fmt);
    err_doit(0, 0, fmt, ap);
    va_end(ap);
    exit(1);
}

/*
* Print a message and return to caller.
* Caller specifies "errnoflag".
*/

static void
err_doit(int errnoflag, int error, const char *fmt, va_list ap)
{
    char buf[MAXLINE];
   vsnprintf(buf, MAXLINE, fmt, ap);
   if (errnoflag)
       snprintf(buf+strlen(buf), MAXLINE-strlen(buf), ": %s",
         strerror(error));
   strcat(buf, " ");
   fflush(stdout); /* in case stdout and stderr are the same */
   fputs(buf, stderr);
   fflush(NULL); /* flushes all stdio output streams */
}



解决unp.h:

http://www.unpbook.com/unpv13e.tar.gz
仍然下载到/home/lbs/Downloads中

解压后

cd unpv13e

cd lib         # build the basic library that all programs need
make           # use "gmake" everywhere on BSD/OS systems

cd ../libfree  # continue building the basic library

inet_ntop.c第61行 size_t size ->改成 socklen_t size
make


这样可以产生libunp.a,复制这个静态库到/usr/lib/和/usr/lib64/

修改lib/unp.h,
#include "../config.h"改成 #include "config.h"
添加一行:
#define MAX_LINE 2048

把unp.h和config.h都复制到/usr/include中。

然后在eclipse的项目属性中设置成这样

unbuntu下eclipse的unp.h和apue.h_第2张图片

OVER!!!

你可能感兴趣的:(linux,C,Progress)