linux快速回顾
Posted 五个板栗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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下的常用操作
跳转到指定的行
- 15G跳转到第15行 (命令模式下)
- :15(底部命令模式下)
- gg 跳转到文件首
- G跳转到文件尾
- L光标移动到最后一行行首
- %跳转到代码所对应的括号
删除字符
- x:删除单个字符(命令模式下,工作模式不变)
- dw:光标置于单词的首字符,删除这个单词
- D:删除光标到行尾
- d0:删除光标到行首
- r:替换单个字符,输入r后再输入替换字符
复制
- yy:复制光标后的一行
- 10yy复制光标后的十行
- 12,46y复制12-46行之间的行
gcc编译可执行程序的4个步骤
- 预处理:展开宏和头文件,替换条件编译,删除注释空行等,生成.i文件
- 编译:检查语法规范,生成.s文件,消耗时间和系统资源最多
- 汇编:将汇编指令翻译机器指令
- 链接:数据段合并,地址回填
gcc常用的参数
- -I:指定头文件所在的位置
- -c:只做预处理,编译,汇编操作
- -g:编译时添加调试语句(需要gdb调试时)
- -Wall:显示更多的警告信息
- -E:生成预处理文件
静态库(static library)和共享库(shared object)
制作静态库:
- 生成.o文件
- 使用ar工具制作静态库 ar rcs (参数)libmylib.a(库名) add.o sub.o
3.编译静态库到可执行文件中
头文件守卫,防止头文件被重复包含
...
制作动态库
- 将.c生成.o文件(生成与位置无关的代码 -fPIC)
gcc -c add.c -o add.o -fPIC
2.使用gcc -shared 制作动态库
gcc -shared -o lib库名.so add.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 查看
以上是关于linux快速回顾的主要内容,如果未能解决你的问题,请参考以下文章