
linux基础梳理 2019.1.19(环境变量,scp,vim各种操作,gcc,静态库,动态库)
编译生成
发布日期:2021-05-06 23:06:49
浏览次数:30
分类:精选文章
本文共 1334 字,大约阅读时间需要 4 分钟。
环境变量与Shell命令
在使用shell命令时,环境变量是非常重要的一部分。环境变量可以帮助shell找到可执行文件的路径,或者指定一些默认的设置。以下是一些常用的命令和方法。
查看环境变量
printenv
命令可以用来查看全局的环境变量。
printenv
set
命令可以用来查看当前shell的环境变量。
set
设置环境变量
要设置环境变量,可以使用export
命令,使其在子shell中也可用。
export VAR=value
如果需要永久设置,可以将命令加入~/.bashrc
文件中。
删除环境变量
unset
命令可以用来删除环境变量。
unset VAR
scp命令与密钥传输
scp
命令用于通过SSH协议传输文件。为了避免输入密码,可以使用密钥传输。
生成密钥
在本地生成密钥对:
ssh-keygen -t rsa
生成的公钥可以发送给目标服务器。
导入公钥
目标服务器运行ssh-agent
并导入公钥:
eval $(ssh-agent)
然后在使用scp
时,指定私钥:
scp -i ~/.ssh/id_rsa *
Vim编辑器使用手册
Vim是一个强大的文本编辑器,支持命令模式和编辑模式。
命令模式操作
在命令模式下,使用以下键盘操作:
- 移动光标:
shift + arrow
- 删除字符:
x
/X
- 复制行:
yy
- 粘贴:
p
/P
编辑模式操作
在编辑模式下,使用以下键盘操作:
- 插入光标位置:
i
/I
- 删除字符并进入编辑模式:
s
/S
查看函数原型
在Vim中查看函数原型,可以使用以下方法:
2shift + k
分屏使用
Vim支持分屏显示,可以使用以下命令:
- 横向分屏:
sp
文件名 - 竖向分屏:
vsp
文件名 - 切换屏幕:
Ctrl + w + w
GCC编译流程
GCC是一个常用的编译器,以下是常用的编译流程。
生成预处理文件
gcc -E hello.c > hello.i
生成汇编文件
gcc -S hello.i > hello.s
生成可执行文件
gcc -c hello.s > hello.ogcc hello.o > hello
使用库文件
要使用库文件,可以使用以下参数:
-I
指定头文件路径-L
指定库文件路径-l
指定库文件名
静态库与动态库制作
静态库制作
静态库将代码编译成可执行文件的一部分。
制作步骤
.o
文件:gcc -c file.c
- 打包成静态库:
- 编译生成与位置无关的
.o
文件: - 打包成动态库:
ar rcs libxxx.a file.o
动态库制作
动态库可以被多个进程共享。
制作步骤
gcc -fPIC -c file.c
gcc -shared -o libxxx.so file.o
发布动态库
将动态库文件复制到目标服务器的 /usr/lib
目录。
使用动态库
在使用时,需要在执行命令前设置环境变量:
export LD_LIBRARY_PATH=/usr/lib:$LD_LIBRARY_PATH
静态库与动态库对比
特性 | 静态库 | 动态库 |
---|---|---|
执行速度 | 较快 | 较慢 |
执行文件大小 | 较大 | 较小 |
发布时的依赖 | 无需发布库文件 | 需要发布库文件 |
更新时的依赖 | 需要重新编译 | 一般不需要重新编译 |
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月09日 12时46分33秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【Oozie】(三)Oozie 使用实战教学,带你快速上手!
2019-03-05
师兄面试遇到这条 SQL 数据分析题,差点含泪而归!
2019-03-05
C语言的数值溢出问题(上)
2019-03-05
BottomNavigationView控件item多于3个时文字不显示
2019-03-05
函数指针的典型应用-计算函数的定积分(矩形法思想)
2019-03-05
8051单片机(STC89C52)以定时器中断模式实现两倒计时器异步计时
2019-03-05
用 wxPython 打印你的 App
2019-03-05
vue项目通过vue.config.js配置文件进行proxy反向代理跨域
2019-03-05
Linux下安装MySql过程
2019-03-05
android:使用audiotrack 类播放wav文件
2019-03-05
vue通过better-scroll 封装自定义的下拉刷新组件
2019-03-05
android解决:使用多线程和Handler同步更新UI
2019-03-05
Element UI 中动态路由的分析及实现
2019-03-05
使用springMVC配置视图管理器后找不到指定的页面
2019-03-05
杭电 2007 平方和与立方和(输入数据的大小顺序并不能默认)
2019-03-05
十大排序算法之三:插入排序(Python)
2019-03-05
利用Python实现循环队列
2019-03-05
利用递归实现二叉树的前中后序遍历(Python)
2019-03-05
冒泡排序又来啦(C/C++版本)
2019-03-05
python负数存储
2019-03-05