linux基础三

nfs 服务器搭建
服务器端
1创建目录
mkdir nfsc
2修改配置文件
/home/calmcar/目录*(rw,sync)
3重启服务
sudo service nfs-kernel-server restart
客户端
1挂载登录
sudo mount serverip:共享目录 /mnt

ssh服务器
服务器端:
安装ssh服务器
(sudo apt-get install openssh-server)
远程登录
ssh 用户名@ip

scp命令:还是必须安装ssh
scp -r 目标用户名@ip:文件目录路径 存放文件的路径
echo 指定制符串
就是让指定的字符串在终端显示,
echo $PATH
这个就是从指定的变量PATH中取值
$这个就是取值符号

vi/vim
先是安装vim
vi是先有
工作模式
命令模式
编辑模式
末行模式
vim编辑器使用
行首 0
行尾 $
文件开始位置gg
文件末尾G
复制yy nyy(就多行复制
删除 x 删除光标位置后边的东西
删除的本质是被剪切走了
删除行 dd ndd是删除多行
粘贴 p
撤销 u
反撤销ctrl + R
查找 /查找内容 这个是从光标位置向下查找
?查找内容 这个是从光标位置向上查找
n 这个是连续向下查找 可查找内容
N这个是连续向上查找 可查找内容
#这个能够给需要查找的内容加上高亮
替换 r
这个只能替换单个字符
切换函数对应的man操作

直接在光标下
shift + k
编辑模式
A在光标行的行尾输入
a在光标行的行首输入
s删除单个字符插入
S删除整行字符插入
	
末行模式
	分屏操作:sp  水平 vsp竖直分屏
	实现分屏幕切换:ctrl + ww

gcc源代码编辑器
流程:
预处理器:(cpp)
就是把头文件展开
把注释去掉
宏替换
gcc -E hello.c -o hello.i
编译器:(gcc)
就是把这个预处理之后的c文件变成汇编文件
gcc -S hello.i -o hello.s
汇编器:(as)
就是把这个汇编文件转化成二进制文件
gcc -c hello.s -o hello.o
链接器:(ld)
将函数库中对应的代码组合到目标文件中
gcc hello.o -o hello
-o 表示指定生成文件的名称,如果不指定就是默认生成一个文件,效果一样
仅仅是文件名称不一样
可以直接就是使用链接
在使用链接的同时
系统会自动调用对应的汇编器,编译器

项目中就是使用源代码生成的库提供给客户
保证客户能够使用其中的程序
但是看不见其中的源代码
发布给客户的就是
静态库和头文件
静态库就是一些二进制文件,但是别人不知道你这边有什么接口
头文件这个就是能够存放头文件的

静态库
命名规则:lib + 库的名称+.a
a表示静态库
静态库的制作步骤
1根据.c文件生成对应的.o文件
2将生成的.o文件打包
ar rcs + 静态库名字(×××.a)+生成的所有.o文件(这个是和位置有关.o)
ar是类是tar的一个打包工具 rcs就是打包使用的参数
静态库就是一堆打包好的.o 文件

给别人提供的静态库和头文件怎么使用
	调用静态库就是自己写一个能够执行的文件
	把这个文件和调用的库一起编译
	在编译的时候并且指定头文件
	就能够生成新的可执行程序
实际上静态链接的打包规则就是
	新生成的可执行程序里边用到了库里边的什么函数
	都是会直接编译到新生成的可执行程序当中去
	没有调用的不会打包,但是动态库就是不打包的
	在编译的时候,只是做标记,说明在什么时候需要用到
	什么函数
静态库的优点:
	发布程序的时候不用提供对应的库文件了
	另外加载速度很快
静态库缺点:
	导致执行文件很大
	如果库发生改变,源代码需要重新编译,比较麻烦

共享库(动态库)
`	命名规则:lib + 名字 +so
	制作步骤:
		1生成和位置无关的代码,就是生成和位置无关的.o
			gcc -fPIC	(和静态库不同的就是多加了个参数)
		2把生成的.o文件打包
		这个直接用gcc -shared 打包
		正常打包好了
		可以直接执行这个程序
但是出现不能链接到动态库的情况??
命名就是已经打包好了
为什么不能链接上
首先我们用ldd + 可执行程序的名称
能够查看这个可执行程序调用的所有的动态库

动态连接器
本质就是一个动态库,根据环境变量能够找到想要调用的链接的库
echo $PATH查看环境变量
怎么解决?
	1把这个动态库放到系统的动态库里边,能够解决这个问题(实际上不能使用)
	但是一般不能这样使用,会导致系统出现麻烦
	2LD_LABTARY_PATH这是一个环境变量,就是这个库的默认路径不是在PATH里边
	但是这LD能够在查找PATH之前就能够提前获取这个里边的路径
	怎么使用呢
	export LD_LABTARY_PATH=./lib
	 其实就是给这个环境变量赋值
	 并且导入到这个环境变量
	但是这只是一个临时的使用,就是每次使用的时候就需要临时导入
	就是开发过程中需要临时导入进行测试
	
	3怎么才能够永久使用????
	在当前用户的根目录下有一个隐藏的.bashrc文件
	在这个文件的最下边那一行中添加一个export LD_LABTARY_PATH=./lib
	重新关闭终端之后再打开终端,就能够实现永久的导入使用
	4这中方法比较复杂但是常用
		(1)找到的动态连接器的配置文件
		在/etc/ls.so.conf
		(2)把动态库的路径写入到配置文件当中去
		添加这个一个动态库的路径
		(3)更新这个配置文件 ----sudo ldconfig(就是使用这个命令)
	优点:
	更新不用更新程序
	缺点:
	发布需要把动态库打包给客户
	gcc编译器总结
	预处理gcc -E
	编译gcc -S
	汇编gcc -c
	链接
	-D在编译的时候控制宏,一般就是控制log的输出
	-o指定生成的文件名字
	-I就是指定头文件的路径

什么是和位置有关无关?????
	就是每一个程序在执行的过程当中,操作系统都能够分配一个0~4G的地址空间
	(虚拟地址空间)这个指的是正在运行的程序,在这个地址空间当中,有一块区域就是
	用来存放代码的,静态库就是这些.o文件有固定的存放地址,但是动态库不是在程序编
	编译的时候调用的,而是在程序已经编译好了之后调用的,所以每次的存放库文件的地
	址是不确定的。所以是和位置无关的情况。	   
makefile 代码管理工具
	就是能够将代码统一编译

c库函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值