赞
踩
总的来说,yum就是一个可以帮助我们去找到软件包下并下载软件的工具,而软件包就是放在服务器上的已经被编译好的可执行程序。
注意:以下关于yum的操作必须保证主机网络通畅
通过 yum list 命令可以罗列出当前一共有哪些软件包. 由于包的数目可能非常之多, 这里我们需要使用 grep 命令只筛选出我们关注的包. 例如:
yum list | grep lrzsz
(查找lrzsz软件)
结果如下:
一般要等待程序去搜索,因此有时候相应的软件很多时需要时间去搜索
注意:
通过 yum, 我们可以通过很简单的一条命令完成 gcc 的安装.
我们以安装上述的 lrzsz 为例子
注:lrzsz这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件.安装完毕之后可以通过拖拽的方式将文件上传过去
sudo yum install lrzsz
yum 会自动找到都有哪些软件包需要下载, 这时候敲 “y” 确认安装.
出现 “complete” 字样, 说明安装完成.
注意事项:
安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成.
yum安装软件只能一个装完了再装另一个. 正在yum安装一个软件的过程中, 如果再尝试用yum安装另外
一个软件, yum会报错.
sudo yum remove lrzsz
vim是一个帮助我们开发的文本编辑器,由于在Linux下不能使用鼠标,因此需要vim来配合程序员完成开发,提高效率。
vim的三种模式(其实有好多模式,目前我只使用三种),分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下
help vim-modes
首先要进入vim中,我们输入命令:
vim 文件名
在使用末行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进入末行模式。
需要用到的背景知识
格式 gcc [选项] 要编译的文件 [选项] [目标文件]
我们的C程序中,并没有定义“printf”的函数实现,且在预编译中包含的“stdio.h”中也只有该函数的声明,而
没有定义函数的实现,那么,是在哪里实“printf”函数的呢?
最后的答案是:系统把这些函数实现都被做到名为libc.so.6 的库文件中去了,在没有特别指定时,gcc 会到系统默认的搜索路径“/usr/lib”下进行查找,也就是链接到 libc.so.6 库函数中去,这样就能实现函数“printf”了,而这也就是链接的作用。
我们可以通过ldd查看我们的C程序所依赖的第三方库
函数一般分为静态库和动态库两种:
gcc hello.o –o hello
动态链接:
优点:省空间,更新方便
缺点:可移植性差
静态链接
优点:可移植性高
缺点:严重浪费空间。
gcc/g++ 选项
-E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面
-S 编译到汇编语言不进行汇编和链接
-c 编译到目标代码
-o 文件输出到 文件
-static 此选项对生成的文件采用静态链接
-g 生成调试信息。GNU 调试器可利用该信息。
-shared 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.
-O0
-O1
-O2
-O3 编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
-w 不生成任何警告信息。
-Wall 生成所有警告信息。
- 程序的发布方式有两种,debug模式和release模式
- Linux gcc/g++出来的二进制程序,默认是release模式
- 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项
我们知道,想要编译成一个可执行程序,就要对一个源文件执行gcc命令,但要是一个工程中有上百个源文件怎么办?手敲一百遍gcc吗?
当然不是!
当一个工程有多个源文件时,我们通过Makefile和make来完成大型工程。
依赖关系:我们在前面讲到过,一个文件完成编译会经过四个步骤,预处理,编译,汇编,链接。分别对应会生成 .i .s .o文件:
很清晰的能够看到:
mycode依赖于mycode.o
mycode.o依赖于mycode.s
mycode.s依赖于mycode.i
mycode.i依赖于mycode
而gcc mycode.o -o mycode 就是与之对应的依赖方法
在编写Makefile时,我们正需要通过依赖关系和依赖方法完成编写并让make命令成功实现编译。
make是如何工作的,在默认的方式下,也就是我们只输入make命令。那么,
$@:表示依赖关系中的目标文件(冒号左侧)。
$^:表示依赖关系中的依赖文件列表(冒号右侧全部)。
$<:表示依赖关系中的第一个依赖文件(冒号右侧第一个)。
工程是需要被清理的
像clean这种,没有被第一个目标文件直接或间接关联,那么它后面所定义的命令将不会被自动执行,
不过,我们可以显示要make执行。即命令——“make clean”,以此来清除所有的目标文件,以便重编
译。
但是一般我们这种clean的目标文件,我们将它设置为伪目标,用 .PHONY 修饰,伪目标的特性是,总是被
执行的。
若内容有错误,请及时提出批评指正!感谢!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。