十四周一次课

14.1NFS介绍

14.2NFS服务端安装配置

14.3NFS配置选项

14.1NFS介绍

NFS介绍

  • NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现数据同步
  • NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,目前最新为4.1版本——>4.1版本是2010年出来还没更新过
  • NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写,意思为远程过程调用
    • 服务端和客户端通信,A机器和B机器之间不能直接通信,需要借助RPC协议来实现
    • 例子
      • 1.服务端和客户端通信,A机器和B机器之间不能直接通信,需要借助RPC协议来实现
  • NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致
  • NFS架构

    • 跑了一个网站,上面传输了很多图片,用户访问一个图片时,需要从A机器上去请求,但A机器负载高,为了分担负载,就多弄了两台机器,B机器C机器同时提供服务;正常的话,需要到A机器上才能拿到数据,但是B机器和C机器做了负载均衡,分担了相同的服务器,那么用户也有可能到B机器或者C机器上;那么用户请求到B机器上的时候,如何才能获取到A机器上的数据呢;要么把A机器的数据传输到B机器上,同时传输到C机器上,但是这个不能时时更新,(用户上传的数据是存放在A机器上,但用户请求的时候数据是请求到B机器上)这样A上的数据还没到B上面去,就会导致用户请求获取的数据访问不到,访问为空,为404;那么NFS服务就可以解决这个问题,将A机器的数据共享到B机器和C机器,通过NFS来实现。有NFS服务以后,上传到A机器上的数据,B机器或C机器上就能马上看到和调用。
    • 例子:
    • 总结,NFS就是实时同步

NFS原理图

  • 服务端需要启动一个NFS服务,服务端要想给客户端提供服务,需要借助RPC协议,RPC协议是由rpcbind服务所实现的;在centos 5或者之前的版本叫portmap服务,centos6及之后的版本叫rpcbind服务,这两个都是一个服务,最终实现了RPC协议的通信,NFS服务默认不会监听任何端口(启动服务,但不会监听端口),最终监听端口,实现TCP/IP通信的过程是由rpcbind服务产生的RPC协议实现的,RPC协议默认监听的端口是111 端口;
  • 整个流程为:服务端的NFS服务监听一个端口通过RPC协议监听的端口,再去告诉客户端RPC协议,然后NFS客户端通过本机的RPC端口回传数据信息到服务端NFS监听的端口,最终实现通信

  • NFS服务需要借助RPC协议实现通信

14.2NFS服务端安装配置

NFS服务端安装配置目录概要

  • yum install -y nfs-utils rpcbind
  • vim /etc/exports //加入如下内容

/home/nfstestdir 192.168.133.1/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

  • 保存配置文件后,执行如下操作
  • mkdir /home/nfstestdir
  • chmod 777 /home/nfstestdir
  • systemctl start rpcbind
  • systemctl start nfs
  • systemctl enable rpcbind
  • systemctl enable nfs

NFS服务端安装配置

1.首先准备两台机器,一个作为服务端,一个作为客户端我这里准备两台虚拟机,A机器IP分别为192.168.11.136,B机器IP为192.168.11.138

  • A机器,查看IP

[[email protected] ~]# ifconfig

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

inet 192.168.11.136  netmask 255.255.255.0  broadcast 192.168.11.255

inet6 fe80::1eb9:8f9e:264a:7159  prefixlen 64  scopeid 0x20<link>

ether 00:0c:29:08:64:43  txqueuelen 1000  (Ethernet)

RX packets 526  bytes 51443 (50.2 KiB)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 76  bytes 8818 (8.6 KiB)

TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

inet 192.168.11.139  netmask 255.255.255.0  broadcast 192.168.11.255

ether 00:0c:29:08:64:43  txqueuelen 1000  (Ethernet)

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

inet 192.168.233.130  netmask 255.255.255.0  broadcast 192.168.233.255

inet6 fe80::8834:1ebf:d84b:7dc9  prefixlen 64  scopeid 0x20<link>

ether 00:0c:29:08:64:4d  txqueuelen 1000  (Ethernet)

RX packets 464  bytes 47165 (46.0 KiB)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 768  bytes 133542 (130.4 KiB)

TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

inet 127.0.0.1  netmask 255.0.0.0

inet6 ::1  prefixlen 128  scopeid 0x10<host>

loop  txqueuelen 1  (Local Loopback)

RX packets 16  bytes 1424 (1.3 KiB)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 16  bytes 1424 (1.3 KiB)

TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[[email protected] ~]#

  • B机器,查看IP

[[email protected] ~]# ifconfig

eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

inet 192.168.11.138  netmask 255.255.255.0  broadcast 192.168.11.255

inet6 fe80::20c:29ff:feaa:97e3  prefixlen 64  scopeid 0x20<link>

ether 00:0c:29:aa:97:e3  txqueuelen 1000  (Ethernet)

RX packets 743172  bytes 1002507382 (956.0 MiB)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 262681  bytes 20781578 (19.8 MiB)

TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

inet 127.0.0.1  netmask 255.0.0.0

inet6 ::1  prefixlen 128  scopeid 0x10<host>

loop  txqueuelen 0  (Local Loopback)

RX packets 36  bytes 1968 (1.9 KiB)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 36  bytes 1968 (1.9 KiB)

TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[[email protected] ~]#

2.将A机器作为服务端,并安装两个包,分别为 nfs-utils 和 rpcbind

  • yum install -y nfs-utils rpcbind

[[email protected] ~]# yum install -y nfs-utils rpcbind

3.将B机器作为客户端,安装 nfs-utils 包

  • 每次刚开机运行yum的时候都会很慢,因为需要重新生成一个缓存文件
  • 有时yum安装的时候很慢,我们可以先禁掉,进入到/etc/yum.repos.d/目录下,将目录下的epel.repo文件改个名字,重新安装即可
  • yum install -y nfs-utils

[[email protected] ~]# yum install -y nfs-utils

4.在安装完成后,需要去A机器中 /etc/exports 编辑配置文件

  • vim /etc/exports //加入如下内容

[[email protected] ~]# vim /etc/exports

/home/nfstestdir 192.168.11.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

5.下面就可以启动服务了,启动服务前需要先创建分享的目录,并设置权限

6.在A机器上创建分享的目录

[[email protected] ~]# mkdir /home/nfstestdir

[[email protected] ~]#

7.并设置成777的权限,这里设置777权限是为了方便接下里的实验

[[email protected] ~]# chmod 777 !$

chmod 777 /home/nfstestdir

[[email protected] ~]#

8.启动 rpcbind ,再启动前查看A机器上监听的端口,就会看到启动了1/systemd,这是centos7系统的一个特性——>111端口是rpcbind服务监听的

  • 用ps可以查看服务已经启动,因为有这个服务,所以监听了111端口

[[email protected] ~]# netstat -lntp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name

tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      802/nginx: master p

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      788/sshd

tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      890/master

tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      802/nginx: master p

tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd

tcp6       0      0 :::22                   :::*                    LISTEN      788/sshd

tcp6       0      0 ::1:25                  :::*                    LISTEN      890/master

tcp6       0      0 :::3306                 :::*                    LISTEN      1037/mysqld

[[email protected] ~]# ps aux |grep rpc

root        378  0.0  0.0      0     0 ?        S<   12:38   0:00 [rpciod]

root       1324  0.0  0.0 112660   980 pts/0    R+   19:38   0:00 grep --color=auto rpc

[[email protected] ~]#

9.再到B机器上查看下端口,会看到也启动了rpcbind

[[email protected] ~]# netstat -lntp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name

tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      2420/master

tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1275/sshd

tcp6       0      0 ::1:25                  :::*                    LISTEN      2420/master

tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd

tcp6       0      0 :::22                   :::*                    LISTEN      1275/sshd

[[email protected] ~]# ps aux |grep rpc

root        378  0.0  0.0      0     0 ?        S<   12:38   0:00 [rpciod]

root       1324  0.0  0.0 112660   980 pts/0    R+   19:38   0:00 grep --color=auto rpc

[[email protected] ~]#

10.在A机器启动了rpcbind,下面就可以启动nfs服务,在使用ps查看

  • systemctl start nfs

[[email protected] ~]# systemctl start nfs

[[email protected] ~]# ps aux |grep nfs

root       1352  0.0  0.0      0     0 ?        S<   19:40   0:00 [nfsd4_callbacks]

root       1358  0.0  0.0      0     0 ?        S    19:40   0:00 [nfsd]

root       1359  0.0  0.0      0     0 ?        S    19:40   0:00 [nfsd]

root       1360  0.0  0.0      0     0 ?        S    19:40   0:00 [nfsd]

root       1361  0.0  0.0      0     0 ?        S    19:40   0:00 [nfsd]

root       1362  0.0  0.0      0     0 ?        S    19:40   0:00 [nfsd]

root       1363  0.0  0.0      0     0 ?        S    19:40   0:00 [nfsd]

root       1364  0.0  0.0      0     0 ?        S    19:40   0:00 [nfsd]

root       1365  0.0  0.0      0     0 ?        S    19:40   0:00 [nfsd]

root       1369  0.0  0.0 112660   980 pts/0    R+   19:40   0:00 grep --color=auto nfs

[[email protected] ~]#

11.同时也可以在A机器上ps aux |grep rpc查询,在启动nfs服务的时候,它会自动帮你启动rpc相关的一些服务

[[email protected] ~]# ps aux |grep rpc

root        378  0.0  0.0      0     0 ?        S<   12:38   0:00 [rpciod]

rpcuser    1338  0.0  0.1  42376  1756 ?        Ss   19:40   0:00 /usr/sbin/rpc.statd

rpc        1340  0.0  0.1  64956  1356 ?        Ss   19:40   0:00 /sbin/rpcbind -w

root       1341  0.0  0.0  42564   948 ?        Ss   19:40   0:00 /usr/sbin/rpc.mountd

root       1342  0.0  0.0  43816   540 ?        Ss   19:40   0:00 /usr/sbin/rpc.idmapd

root       1371  0.0  0.0 112664   980 pts/0    R+   19:41   0:00 grep --color=auto rpc

[[email protected] ~]#

12.而在客户端B机器上是没有的这些服务的

[[email protected] ~]# !ps

ps aux |grep rpc

root        535  0.0  0.0      0     0 ?        S<   00:23   0:00 [rpciod]

rpc        2642  0.0  0.1  64896  1040 ?        Ss   03:37   0:00 /sbin/rpcbind -w

root       2649  0.0  0.0 112660   976 pts/0    R+   03:42   0:00 grep --color=auto rpc

[[email protected] ~]#

13.如果想让nfs开机启动,还需要执行systemctl enable nfs 命令,在服务端A机器上调用

  • systemctl enable nfs 开机启动nfs
  • systemctl disable nfs 关闭开机启动

[[email protected] ~]# systemctl enable nfs

Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.

[[email protected] ~]#

14.3NFS配置选项

NFS配置选项

  • rw 读写
  • ro 只读
  • sync 同步模式,内存数据实时写入磁盘,相应的就会降低磁盘效率
  • async 非同步模式,它会每隔一段时间才会将数据刷新到磁盘
    • 优势:能够保证磁盘的效率
    • 劣势:万一断电,就会有可能丢失一部分数据
  • no_root_squash 客户端挂载NFS共享目录后,root用户不受约束,权限很大
    • NFS,要想在客户端上去使用服务端上共享的目录,需要去把它挂载到客户端上的一个挂载点,那就跟本地上的目录是一样的,在操作本地的目录时候,肯定会有一些权限设置,如果加上no_root_squash,这样root用户去共享目录下读写文件的时候,就不会受到限制(就相当于root用户在本地上读写)
  • root_squash 与上面选项相对,客户端上的root用户受到约束,被限定成某个普通用户
  • all_squash 客户端上所有用户(包括root用户)在使用NFS共享目录时都被限定为一个普通用户
  • anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid

客户端上挂载

1.首先在客户端B机器上安装了rpcbind,它是由nfs-utils 这个包自动安装的

[[email protected] ~]# yum install -y nfs-utils

2.在B机器上安装完成后不需要启动任何服务

3.在B机器上执行 showmount -e 命令

  • showmount -e 192.168.11.136 //查看在NFS服务端是否有权限
    • 该ip为NFS服务端ip

[[email protected] ~]# showmount -e 192.168.11.136

clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

[[email protected] ~]#

4.这时候会看到报错了,RPC: Port mapper failure说明网络不通,无法与192.168.11.136端口通信

  • 不能通信的两种情况
    • 要么是对方没有开启rpcbind的服务,没有监听111端口
    • 要么是防火墙导致的原因

5.因为之前在服务端已经开启了rpcbind服务,那这时只能说明是防火墙导致的,所以要想让NFS实现正常的通信,还需要把防火墙关闭,因为NFS服务比较特殊,虽然rpc可以通信,就算iptables把111端口放行但NFS也不一定能正常通信,因为它们使用了一个不固定的端口

6.这时先把A机器服务端和B机器客户端,防火墙关闭,命令systemctl stop firewalld

A机器关闭防火墙

[[email protected] ~]# systemctl stop firewalld

[[email protected] ~]# getenforce

Disabled

A机器清空iptables规则

[[email protected] ~]# iptables -F

[[email protected] ~]#

B机器关闭防火墙

[[email protected] ~]# systemctl stop firewalld

[[email protected] ~]# getenforce

Enforcing

[[email protected] ~]# setenforce 0

[[email protected] ~]# getenforce

Permissive

[[email protected] ~]#

7.这时再去B机器客户端来showmount -e 192.168.11.136 ,这时会看到可以能show到远程服务端192.168.11.136这台机器,它共享的目录是/home/nfstestdir

[[email protected] ~]# showmount -e 192.168.11.136

Export list for 192.168.11.136:

/home/nfstestdir 192.168.11.0/24

[[email protected] ~]#

8.这时候在B机器客户端上来挂载了,然后查看——>挂载的时间可能有点慢

[[email protected] ~]# mount -t nfs 192.168.11.136:/home/nfstestdir /mnt/

[[email protected] ~]# df -h

Filesystem                       Size  Used Avail Use% Mounted on

/dev/sda3                         18G  4.8G   14G  27% /

devtmpfs                         485M     0  485M   0% /dev

tmpfs                            490M     0  490M   0% /dev/shm

tmpfs                            490M  6.7M  484M   2% /run

tmpfs                            490M     0  490M   0% /sys/fs/cgroup

/dev/sda1                        197M   75M  122M  39% /boot

192.168.11.136:/home/nfstestdir   16G  6.7G  9.1G  43% /mnt

[[email protected] ~]#

9.这个就是远程NFS服务端共享的目录

10.这时到B机器客户端共享的目录下创建文件

[[email protected] ~]# cd /mnt/

[[email protected] mnt]# ls

[[email protected] mnt]# touch aminglinux.111

[[email protected] mnt]# ll

total 0

-rw-r--r--. 1 tianqi tianqi 0 Mar 26 20:29 aminglinux.111

[[email protected] mnt]#

11.到A机器的服务端查看,可以看到文件的属主和属组都为1000

[[email protected] ~]# ll /home/nfstestdir/

total 0

-rw-r--r-- 1 mysql mysql 0 Mar 26 20:29 aminglinux.111

[[email protected] ~]# tail /etc/passwd

polkitd:x:999:997:User for polkitd:/:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

ntp:x:38:38::/etc/ntp:/sbin/nologin

mysql:x:1000:1000::/home/mysql:/bin/bash

tianqi:x:1001:1001::/home/tianqi:/bin/bash

php-fpm:x:1002:1002::/home/php-fpm:/bin/bash

rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin

rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin

nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

[[email protected] ~]#

  • 原因是配置 /etc/exports文件时,配置了anonuid=1000,anongid=1000
  • 客户端显示1000用户是因为客户端机器上并没有1000权限的用户
  • 同样,服务端显示mysql,是因为服务端上的机器mysql 就是1000权限的用户

总结

  • 在/etc/exports文件中的/home/nfstestdir 192.168.11.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000) ,其中ip与(rw之间不能有空格, 否则客户端挂载的目录会变成只读..

友情推荐:http://www.apelearn.com阿铭linux

原文地址:http://blog.51cto.com/13184900/2091350

时间: 2024-10-05 07:19:24

十四周一次课的相关文章

十四周三次课(3月28日)

十四周三次课(3月28日)15.4 xshell使用xftp传输文件 安装xftp.登陆xshell,再按快捷键Ctrl+Alt+F 15.5 使用pure-ftpd搭建ftp服务 pure-ftpd比vsftpd更加简单 安装epel扩展源(若已安装则跳过该步):yum install -y epel-release 指定密码配置文件 如果之前启用了vsftp,占用了21端口,要先停掉 创建目录,系统用户,修改属组 创建用户ftp_usera -u指定映射虚拟系统用户 -d 指定系统用户家目录

linux十四周一次课(5月9日)笔记

十四周一次课(5月9日)14.1 NFS介绍14.2 NFS服务端安装配置14.3 NFS配置选项 14.1 NFS介绍 保证3台机器的数据一样.A负载高,为了分担负载,找了两台服务器B和C,同时提供服务.正常用户要到A上,才能拿到图片.作为负载均衡,BC分担了A,有可能请求到B,也有可能请求到C.数据在A,要么传输到B,传输到C,但不实时.A服务器的数据可以共享给BC,B服务器的数据可以被AC马上看到. NF服务需要借助RPC协议实现 14.2 NFS服务端安装配置准备两台机器 130是客服端

十四周三次课

15.4 xshell使用xftp传输文件 15.5 使用pure-ftpd搭建ftp服务 15.4 xshell使用xftp传输文件 1.在xshell按快捷键 ctrl+alt+f ,会自动弹出一个xftp的提示下载界面 2.进入到下载界面 3.选择下载以后,会进入一个填写资料的页面,上面的是免费的,下面的收费的,我们选择上面一个填写资料 4.邮箱项,很重要.因为会在你的邮箱里有下载地址和使用教程,是通过邮箱发送,而且最好使用一些比较权威的邮箱:如果是qq邮箱国外发送邮件会有一些延迟: 5.

Linux学习笔记十四周三次课(5月11日)

15.4 xshell使用xftp传输文件 从www.netsarang.com网站下载xftp软件 或者,xftp下载地址:http://pan.baidu.com/s/1eSMSLN0 密码:8os4 在windows7系统中安装xftp软件, centos7关掉vsftpd服务#systemctl stop vsftpd centos7查看端口#netstat -lntp 在centos7系统中,按ctrl+alt+f,弹出以下文件传输对话框,选中文件拖动到对应系统即可复制传输文件. 15

学习进度第十四周

  第十四周 所花时间(包括上课) 16h(4h上课,12课下) 代码量(行) 400 博客量(篇) 10 了解到的知识点 1.这个星期进行了一次求最优惠价格的课堂练习编程,在老师的引导下,才有了思路. 明白了在没有规律的情况下,我们不能因为没有思路就停滞不前,哪怕穷举也应进行下去,说不定就发现规律了呢. 2.完成了软件工程团队开发的第二阶段的冲刺,对蓝牙通信的实现有了一定的经验

第十四周(-用文件保存的学生名单)

/* *copyright(c) 2015,烟台大学计算机学院 *All rights reserved. *文件名称:第十四周(-用文件保存的学生名单) *作者:王忠 *完成日期:2015.6.09 *版本号:v1.0 * *问题描述:文件score.dat中保存的是若干名学生的姓名和C++课.高数和英语成绩. (1)定义学生类,其中包含姓名.C++课.高数和英语成绩及总分数据成员. (2)用对象数组进行存储学生的成绩,读入成绩并计算总分:将总分高于平均总分且没挂科的同学的信息保存到文件pas

2017面向对象程序设计(Java)第十四周学习总结

上周的学习的主要内容是Swing用户界面组件.课程的目的是掌握GUI布局管理器的用法和掌握各类Java Swing组件用途及常用API.如果学生有Web前端的相关知识的话,可以结合两者的知识特点进行学习.本章的学习不仅需要理论知识的支撑,而且更需要同学有一定的想象力.希望同学们不仅要熟悉课本和实验上的实例,最好能找到优秀的MVC设计模式前端实例进行研读. 总结第十四周实验报告和博文情况. 首先需要表扬:张美玲  赵晓  两位同学作业完成较好. 实验报告未提交者:  王瑞强  布旦刀杰  范颜军 

2017-2018-1 20155302 第十四周作业

2017-2018-1 20155302 第十四周作业 重新精学第十一章网络编程相关知识 第十一章网络编程因为之前在刘念老师的课上有所涉及有所讲解所以娄老师并没有着重讲这块知识,但我个人认为此章知识非常重要,是我们学习WEB编程和信息安全程序设计的基础,而且这章知识自问之前学习的并不好,并不牢靠,于是借着此次机会更加深入的学习重温一下网络编程方面的知识,好为今后的网络编程道路做好铺垫,学习一章内容两门课都能受益,何乐而不为呢? 首先回答几个问题,这些问题也是之前概念混淆所遗留下来的,此次重新学习

20155325 2017-2018 1 《信息安全系统设计基础》 第十四周学习总结

++不论是在查资料还是编译运行时总能碰到这个库那个链接的问题,所以我认为有必要再回去看看第七章++ 教材学习内容总结 静态链接过程 命令: gcc -Og -o 可执行目标文件名 main.c 函数名.c //编译 ./可执行目标文件名 //运行 可重定向目标文件&可执行目标文件 符合和符号表 任何带有static属性声明的全局变量或者函数都是模块私有的. 符号表是由汇编器构造的,使用编译器输出到汇编语言.s文件中的符号. 与静态库链接 使用C标准库和数学库中函数的程序 gcc main.v /