红联Linux门户
Linux帮助

unbuntu下eclipse的unp.h和apue.h

发布时间:2016-05-19 09:53:24来源:linux网站作者:libaishen1991

最终效果:

unbuntu下eclipse的unp.h和apue.h

可以看见最后都是以#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

OVER!


本文永久更新地址:http://www.linuxdiyf.com/linux/20764.html