`
naiquan_hu
  • 浏览: 66689 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

VMware桥接网络配置和Redhat9下apue.2e源码编译过程

阅读更多

 

   VMware 桥接网络配置

     我的VMware 版本是6.0.2hostwindowsXP,GuestRedhat9, 桥接网络设置是几种网络方式中最简单的一种。

  host 网络是公司的局域网,自动获得IP 地址,具体设置如下:

1.         安装好 VMware 后在网络连接中可以看到三个网卡:


如果使用桥接模式的话,后两个虚拟网卡禁用还是启用对联网没什么影响,我把它们都禁用了

1.         设置本地连接为自动获得IP 地址,并勾选”VMware Bridge Protocol”



 

命令ipconfig 查看一下hostIP:



 3.  虚拟机 -- 》设置 -- 》选择 Ethernet, 网络连接方式选择 桥接 ,如下图:


4 启动虚拟机,进入 RedHat9 打开网络配置:



 

 

 

点击“确定”后,查看一下有没有分配到 IP 地址:



 

看到虚拟机已经分配到 IP 10.25.73.117 ,重启后进入,虚拟机就可以上网了。

好了,桥接网络就这么简单。

由于最近在学习《 UNIX 环境高级编程(第 2 版)》,想在 RedHat9 下做一下里面的实验,于是就在上面的虚拟机 RedHat9 下编译 apue.2e 工程源代码,具体步骤如下文。

  RedHat9 APUE 源代码编译

1 APUE2 源代码下载: http://www.apuebook.com/src.tar.gz

2.  我保存到了 /home/workspace . 解压缩 :tar -xzvf src.tar.gz

3. cd apue.2e 进入 apue.2e 目录 , 查看 README, 告诉我们 linux 系统只要修改 Make.defines.linux make

4. vi Make.defines.linux 修改 WKDIR=/home/workspace/apue.2e 就是说工作目录为 WKDIR=/home/workspace/apue.2e

5. 修改 /home/workspace/apue.2e/std/linux.mk 把全部的 nawk 改为 awk. 因为 linux 默认没有 nawk

6. make

7. 编译后把生成的 /home/workspace/apue.2e/include/apue.h 拷贝到 /usr/include 下, 之后就可以按照书中的例子来做了。

 

  错误处理

      如果你编译程序过程中出现如下错误:

 

/tmp/cc6cU7YY.o(.text+0x1f): In function `main':
: undefined reference to `err_quit'
/tmp/cc6cU7YY.o(.text+0x53): In function `main':
: undefined reference to `err_sys'
collect2: ld returned 1 exit status

解决办法:

err_quit跟err_sys是作者自己定义的错误处理函数,需要单独定义头文件

在/usr/include 下新建一个名为myerr.h的文件

拷贝下边的内容到myerr.h(其实此头文件在原书的附录B中)

#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 */
}
然后编辑同一目录下的apue .h 文件(这个文件是通过前一个步骤添加的)。在最后一行#endif    /* _APUE_H */前面添加一个声明:
#include "myerr .h "
然后转至源代码所在目录,编译:

        gcc   -o myls myls.c

    这次获得成功,运行:

       ./myls  /usr

    出现如下结果

     src
     ..
     .
     lib
     share
     sbin
     include
     local
     X11R6
     bin
     games

     成功列出所有文件夹,success!

     希望对和我一样的初学者有一定的帮助。

  • 大小: 20.6 KB
  • 大小: 29.3 KB
  • 大小: 26.4 KB
  • 大小: 14 KB
  • 大小: 20.9 KB
  • 大小: 22.7 KB
  • 大小: 22.2 KB
  • 大小: 22.6 KB
  • 大小: 19.6 KB
  • 大小: 20.9 KB
0
0
分享到:
评论

相关推荐

    Redhat Linux 9.0 在vmware下,桥接不能上网的解决方法

    Redhat Linux 9.0 在 VMware 下桥接不能上网的解决方法 本文档将详细介绍如何解决 Redhat Linux 9.0 在 VMware 下桥接模式下无法上网的问题。通过本解决方法,您将能够成功地解决这个问题,并且掌握一些基本的 ...

    redhat7.9 + yum.repos.d

    在实际操作中,用户可能需要根据网络环境和需求调整`.repo`文件的配置,例如切换到更近的镜像源或选择特定版本的仓库。使用`yum update`或`yum install`命令时,`yum`会读取`yum.repos.d`目录下的所有`.repo`文件,...

    安装VMware9.0软件并载入Redhat9.0镜像.pdf

    在安装 VMware9.0 软件之前,您需要准备三个镜像文件:Linux-RedHat-9.0 (disk-1)、Linux-RedHat-9.0 (disk-2) 和 Linux-RedHat-9.0 (disk-3)。这些镜像文件将用于载入 Redhat9.0 操作系统。 安装 VMware9.0 软件 ...

    VMware+RedHat 网络配置

    VMware+RedHat 网络配置VMware+RedHat 网络配置VMware+RedHat 网络配置VMware+RedHat 网络配置VMware+RedHat 网络配置

    GaussDB_100_1.0.1-DATABASE-REDHAT-64bit.tar.gz

    《GaussDB 100在RedHat系统上的安装与配置详解》 GaussDB 100是一款高性能的企业级分布式数据库系统,尤其适合大规模数据处理和分析场景。本篇文章将详细阐述如何在Red Hat Enterprise Linux 64位环境下安装GaussDB...

    实验指导书1_vmware与redhat linux 7.3安装.pdf

    实验步骤中,学生将按照指导书中的步骤逐步完成实验,包括在 VMware 虚拟机中安装 Redhat Linux 7.3 操作系统、安装 VMware Tools 和显卡驱动、配置网络和实现 Telnet 远程访问等。通过本实验,学生将获得 VMware 和...

    VMWare虚拟机+Redhat linux 5安装vmware-tools

    _VMWare虚拟机+Redhat Linux 5安装vmware-tools_ VMWare虚拟机是一种popular的虚拟机软件,可以在物理机器上运行多个虚拟机,每个虚拟机可以运行不同的操作系统。Redhat Linux 5是Redhat公司推出的一个Linux操作...

    vmware上安装redhat9步骤.doc

    在本教程中,我们将详细介绍如何在VMware虚拟机中安装Red Hat 9操作系统,这是一个经典的Linux发行版。首先,确保你已经准备了以下必要的软件: 1. VMware:可以从官方提供的下载地址获取,例如链接指向的Thunder...

    安装VMware9.0软件并载入Redhat9.0镜像.docx

    ### 安装VMware 9.0 软件并载入Redhat 9.0 镜像 #### 前言 随着虚拟化技术的发展,越来越多的企业和个人选择使用虚拟机来模拟不同的操作系统环境,这不仅可以提高工作效率,还能节省硬件资源。本教程将详细介绍...

    VMware虚拟机RedHat联网实施步骤参考.pdf

    VMware虚拟机提供了三种网络连接方式:桥接、NAT和host-only。桥接方式将虚拟机连接到物理网络中,使虚拟机可以访问外部互联网。NAT方式将虚拟机连接到虚拟交换机上,使虚拟机可以访问外部互联网,而不需要独立的IP...

    vmwareTools虚拟机工具安装(图文,以RedHat9[1].0为例

    1. **启动安装过程**:在VMware界面中,确保虚拟机处于窗口模式,按下Ctrl+Alt释放鼠标。点击菜单栏的“虚拟机” -&gt; “安装VMware Tools”。 2. **挂载光盘**:RedHat 9.0通常会自动挂载虚拟光驱,如果没有,可以...

    RedHat9下安装yum

    总的来说,这个过程涉及到了Linux系统的源码编译、依赖管理、包安装等多个关键知识点。通过手动安装GCC、gettext和Yum,不仅了解了基本的软件安装流程,也对Linux系统内部的工作原理有了更深入的认识。这对于进一步...

    在Redhat 9下建立 ARM-Linux 交叉编译环境

    ### 在Redhat 9下建立ARM-Linux交叉编译环境 #### 一、背景与目的 随着嵌入式系统的快速发展,ARM架构因其低功耗、高性能等特性成为了嵌入式领域的主流选择之一。为了能够在非目标平台(如x86架构的PC)上为ARM...

    GaussDB_100_1.0.1-DATABASE-REDHAT-64bit.7z

    《GaussDB_100在RedHat系统上的安装与配置详解》 GaussDB_100_1.0.1-DATABASE-REDHAT-64bit.7z是一个专为Red Hat Enterprise Linux 64位系统设计的GaussDB数据库安装包。GaussDB是由华为开发的一款分布式并行数据库...

    GaussDB_100_1.0.1-DATABASE-REDHAT-64bit.tar.gz&HCIA-GaussDB_V1.0实验手册的安装教程.zip

    此版本为hedhat7.X以上版本,解压文件夹,里面包含了GaussDB_100_1.0.1-DATABASE-REDHAT-64bit.tar.gz,华为高斯数据库认证HCIA-GaussDB_V1.0实验手册.pdf,华为GaussDB 客户端工具—Data Studio 安装教程,照着文档...

Global site tag (gtag.js) - Google Analytics