Linux的基础操作

环境变量:

1.放在/home(~/.bashrc)下的环境变量配置文件,只会对当前用户起作用;在/etc(/etc/profile)下的环境变量所有的用户都起作用
2.命令显示当前系统定义的所有环境变量:env
3.输出当前的PATH环境变量的值:echo $PATH
4.新添加环境变量:export PATH=/home/uusama/mysql/bin:$PATH   ($PATH代表原来的环境配置)
5.在终端输入export只会在当前窗口生效,关闭终端后就失效了;在.bashrc中export,每次打开终端都会重新加载一遍。


普通复制:(cp改成mv即移动)

cp -r /home/yzy/a.txt  /home/yzy/sdk,可以复制文件or目录,得到一个新文件or目录,与源文件无关,互不干扰。

scp远程传输:

本地拷到远程  scp /home/test/a.cc 10.71.233.85:/home/yzy  

远程拷到本地  scp -r root@10.71.233.85:/home/yzy/test /home/test3


网络问题:
1.ip addr   查本机ip是否正确,10开头证明是公司内网
2.route  查本机网关是否配置正确,可ping通
3.去另外一台正常上网的机器,ping proxy.huawei.com,得到域名的ip地址,在原机器用ip地址替换掉proxy.huawei.com,可以正常访问外网了

分析:主机的内网都是正常的,访问外网出问题,应该是dns(域名解析)出问题了,因此可以跳过dns,直接写ip地址;也可以修改dns让它正常解析



硬连接: ln src dst

只能链接文件,生成一份新的文件;修改源文件or新文件,两者都会跟着改变,删除源文件对新文件没有影响,常用于重要文件备份。

软连接: ln -s src dst

可以链接文件和目录,生成一个类似于"快捷文件"的文件,可以通过此文件访问源文件路径;删除源文件的话该文件链接会失效。


编译静态库/动态库(gcc)

静态格式:win  .lib,linux  .a      动态格式:win  .dll,linux  .so

静态链接库:在编译时就把需要链接的库打包好。

优点:易于移植;

缺点:浪费空间,每编译一个都要打包所有库,另外链接库更新时,所有链接都得重新编译更新。

动态链接库:在运行时才指向需要链接的库。

优点:节省空间,内存共享复用,当运行的时候,内存中加载过的库不用重复加载;

缺点:因为在运行时要寻找链接的库,所以耗时会比静态链接慢

制作静态库:
gcc test.c -c -I../include(生成.o目标文件)
ar rcs libtest.a test.o(把.o文件打包为静态库.a)
mv libtest.a ../lib(将静态库文件放置lib文件夹下)

制作动态库:
gcc -fPIC test.c -I ../include -c(生成.o文件,参数-fPIC表示生成与位置无关代码)
gcc -shared -o libtest.so test.o(把.o文件打包为动态库.so,参数:-shared 制作动态库 -o:重命名生成的新文件)
mv libMyTest.so ../lib(将动态库文件放置lib文件夹下)


gcc编译步骤:

整个编译分为四个步骤:
1.预编译:把代码文件进行预编译成main.i文件,预编译过程中去掉注释、进行宏替换、增加行号信息等;
2.编译:将main.i文件经过语法分析、代码优化和汇总符号等步骤后,编译形成main.S的汇编文件,里面存放的都是汇编代码;
3.汇编:进行汇编,从main.S变成二进制可重定位目标文件main.o;
4.链接:把需要引用到的库文件进行链接,生成可执行文件。

gcc -E main.c -o main.i  #预编译,生成main.i文件  
gcc -S main.i            #编译,生成main.S文件(汇编代码)
gcc -c main.S            #汇编,生成main.o文件  (目标文件)
gcc main.o -o main       #链接,生成可执行文件

-L(大写l)参数就是用来指定程序要链接的库,-l(小写l)参数紧接着就是库名(lib的搜索路径顺序:指定路径->/lib、/usr/lib、/usr/local/lib)

1.放在/lib和/usr/lib和/usr/local/lib里的库直接用-l参数就能链接了,比如:-ltest
2.放在其他目录的,比如我们把libtest.so放在/aaa/bbb/ccc目录下,那就要指定路径:-L/aaa/bbb/ccc -ltest

同理,-L(大写l)指定搜索路径,-l(小写l)指定要引入的头文件:gcc test.c -L /path/to/sparcLib -I /path/to/sparcInclude 



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值