linux快速回顾

高斋晓开卷,独共圣人语。这篇文章主要讲述linux快速回顾相关的知识,希望能为你提供帮助。

  • cat  /etc/shells    查看有哪些shell
  • echo $SHELL      查看你当前使用的shell  $表示取环境变量的值  echo回显
  • linux中所见皆文件
bin:存放二进制文件
boot:存放开机启动程序
dev:存放设备文件
home:存放用户
etc:存放用户信息和系统配置文件
lib:存放库文件
root:管理员宿主目录
usr:用户资源管理目录


  • linux系统文件类型
普通文件: -
目录文件:d
字符设备文件:c
块设备:b
软连接:l
管道文件:p
套接字:s


  • 创建软连接ln -s原文件 新文件名

  • 创建硬链接 ln  原文件 新文件名




  • find命令:找文件
-type 按照文件类型查找
-name 按照文件名查找
-maxdepth 指定搜索的深度  -maxdepth 1 一层目录    -maxdepth 2  两层目录
-size 按文件大小搜索    find  /home/hai  -size +20M    -size  -50M
-mtime ctime  atime    amin  mmin  cmin  修改时间 
-exec:将find搜索的结果执行某一指定命令
-ok:以交互式的方式执行某一指定命令
-xargc :将find搜索的结果执行某一指定命令  当结果集数量过大时,可以分片映射









  • env:查看当前进程环境变量
  • ifconfig:查看ip地址


?vim下的常用操作?
跳转到指定的行
  1. 15G跳转到第15行 (命令模式下)
  2. :15(底部命令模式下)
  3. gg 跳转到文件首
  4. G跳转到文件尾
  5. L光标移动到最后一行行首
  6. %跳转到代码所对应的括号
删除字符
  1. x:删除单个字符(命令模式下,工作模式不变)
  2. dw:光标置于单词的首字符,删除这个单词
  3. D:删除光标到行尾
  4. d0:删除光标到行首
  5. r:替换单个字符,输入r后再输入替换字符
复制
  1. yy:复制光标后的一行
  2. 10yy复制光标后的十行
  3. 12,46y复制12-46行之间的行
?gcc编译可执行程序的4个步骤?
  1. 预处理:展开宏和头文件,替换条件编译,删除注释空行等,生成.i文件
  2. 编译:检查语法规范,生成.s文件,消耗时间和系统资源最多
  3. 汇编:将汇编指令翻译机器指令
  4. 链接:数据段合并,地址回填
      gcc常用的参数
  1. -I:指定头文件所在的位置
  2. -c:只做预处理,编译,汇编操作
  3. -g:编译时添加调试语句(需要gdb调试时)
  4. -Wall:显示更多的警告信息
  5. -E:生成预处理文件
静态库(static library)和共享库(shared object)
?制作静态库:?
  1. 生成.o文件
  2. 使用ar工具制作静态库ar rcs (参数)libmylib.a(库名) add.o sub.o

3.编译静态库到可执行文件中

头文件守卫,防止头文件被重复包含
#ifnedef _HEAD_H
#define_HEAD_H
...
#endif

?制作动态库
  1. ?将.c生成.o文件(生成与位置无关的代码 -fPIC)
gcc -c add.c -o add.o -fPIC

【linux快速回顾】2.使用gcc -shared 制作动态库
gcc -shared -o lib库名.soadd.o sub.o div.o
file lib库名.so查看库描述信息

3.编译可执行程序时,指定可使用的动态库 -l指定库名 -L指定库路径
gcc test.c -o a.out -lmymath -L./lib

4.运行可执行程序 a.out  ?会出错?
原因:
链接器: 工作与链接阶段,需要-l -L
动态链接器:工作与程序运行阶段,工作时需要提供动态库所在目录位置
通过环境变量来改变
export LD_LIBRARY_PATH=动态库路径
./a.out 成功运行

但这样修改只是临时生效,重启终端环境变量失效,想要永久生效写入配置文件./bashrc 写绝对路径
vi ~/.bashrc
写入export LD_LIBRARY_PATH=动态库路路径
. .bashrc 或 source .bashrc 或重启终端
./a.out

还可以这样做
sudo vi /etc/ld.so.conf
写入动态库绝对路径 保存
sudo ldconfig -v 使配置文件生效
./a.out
ldd a.out 查看




    推荐阅读