使用 GCC 的命令行进行程序编译在单个文件下是比较方便的,当工程中的文件逐渐增多,甚至变得十分庞大的时候,使用 GCC 命令编译就会变得力不从心。这种情况下我们需要借助项目构造工具 make 帮助我们完成这个艰巨的任务。 make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Visual C++的nmake,QtCreator的qmake等。
make工具在构造项目的时候需要加载一个叫做makefile的文件,makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。
makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
makefile文件有两种命名方式 makefile 和 Make ...
Linux
未读不管是Linux还是Windows中的库文件其本质和工作模式都是相同的, 只不过在不同的平台上库对应的文件格式和文件后缀不同。程序中调用的库有两种 静态库和动态库,不管是哪种库文件本质是还是源文件,只不过是二进制格式只有计算机能够识别,作为一个普通人就无能为力了。
在项目中使用库一般有两个目的,一个是为了使程序更加简洁不需要在项目中维护太多的源文件,另一方面是为了源代码保密,毕竟不是所有人都想把自己编写的程序开源出来。
当我们拿到了库文件(动态库、静态库)之后要想使用还必须有这些库中提供的API函数的声明,也就是头文件,把这些都添加到项目中,就可以快乐的写代码了。
1. 静态库
在Linux中静态库由程序 ar 生成,现在静态库已经不像之前那么普遍了,这主要是由于程序都在使用动态库。关于静态库的命名规则如下:
在Linux中静态库以lib作为前缀, 以.a作为后缀, 中间是库的名字自己指定即可, 即: libxxx.a
在Windows中静态库一般以lib作为前缀, 以lib作为后缀, 中间是库的名字需要自己指定, 即: libxxx.lib
1.1 生成静态链接库
生成静态 ...
GCC 是 Linux 下的编译工具集,是 GNU Compiler Collection 的缩写,包含 gcc、g++ 等编译器。这个工具集不仅包含编译器,还包含其他工具集,例如 ar、nm 等。
GCC 工具集不仅能编译 C/C++语言,其他例如 Objective-C、Pascal、Fortran、Java、Ada 等语言均能进行编译。GCC 在可以根据不同的硬件平台进行编译,即能进行交叉编译,在 A 平台上编译 B 平台的程序,支持常见的 X86、ARM、PowerPC、mips 等,以及 Linux、Windows 等软件平台。
1. 安装 GCC
有些纯净版的Linux默认没有gcc编译器, 需要自己安装, 在线安装步骤如下:
12345678# 安装软件必须要有管理员权限# ubuntu$ sudo apt update # 更新本地的软件下载列表, 得到最新的下载地址$ sudo apt install gcc g++ # 通过下载列表中提供的地址下载安装包, 并安装# centos$ sudo yum update # 更新本地的软件下载 ...
1. vim的安装
Vim是Linux操作系统中一款功能强大的文本编辑器, 支持安装各种插件。但是vim和windows中的文件编辑器所不同的是它没有UI界面,所有的操作都是通过键盘快捷键操作完成的,因此要想熟练使用vim在Linux中进行文本编辑是有成本的, 需要花费一定的时间去练习。
如果我们拿到了一个纯净版的Linux, 里边是没有vim的,但是有一个类似的文本编辑器叫做Vi。vi编辑器的功能不是很强,可以这样理解vim就是vi的增强版。
首先介绍一下如何在线安装vim,软件安装需要管理员权限:
Ubuntu
1$ sudo apt install vim # 如果是root用户就不用加 sudo 了
CentOS
1$ sudo yum install vim # 如果是root用户就不用加 sudo 了
vim安装完毕之后, 可以先查看一下版本 (在线安装不能保证安装的软件是最新版本)
1$ vim --version
另外vim还提供了使用文档, 直接在终端执行下面的命令就可以打开了
1$ vimtutor
2. vim的模式在vim中一共有三种模式, ...
Linux的文本编辑器vim功能不仅强大, 还支持安装各种插件, 但是插件的安装一直是让小伙伴们头疼的问题。下面为大家介绍一个快速安装插件的方法,这是github上的一个开源项目, 基于脚本一键安装, 下面是这个项目里README中的相关描述:
vimplus项目的github地址: https://github.com/chxuan/vimplus
由于防火墙原因,该插件在安装过程中需要搭梯子,否则可能会导致一些文件无法下载的情况。在本文末尾为大家同了易总这种的解决方案,没有版本控的小伙伴可以参考(其实什么版本都一样用)
1. 安装1.1 Mac OS X安装HomeBrew1/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安装vimplus123git clone https://github.com/chxuan/vimplus.git ~/.vimpluscd ~/.vimplus./install.sh ...
Linux
未读1. 添加新用户
我们在Linux系统中经常需要根据不同的需求创建对应的新用户, 但是新用户作为一个普通用户, 权限是非常有限的, 默认不能够使用管理员权限执行某些管理员才能执行的命令, 给大家演示一下操作步骤:
12345678910111213141516171819202122232425# 添加新用户 sanji[root@VM-8-14-centos ~]# adduser sanji# 给新用户 sanji 设置一个密码[root@VM-8-14-centos ~]# passwd sanjiChanging password for user sanji.New password: Retype new password: passwd: all authentication tokens updated successfully.# 切换到 sanji 用户[root@VM-8-14-centos ~]# su - sanji# 让 sanji 用户执行一个只有管理员才有权限执行的操作, 因此需要在命令前加 sudo[sanji@VM-8-14-centos ~]$ ...
在使用Linux系统的时候, 我们经常会需要查找某些文件,但是大多数情况下我们并不能确定这些文件的具体位置,这样的话就非常浪费我们的时间。Linux为我们提供了很多的用于文件搜索的命令, 如果需求比较简单可以使用 locate,which,whereis 来完成搜索, 如果需求复杂可以使用 find, grep进行搜索。其中 which在前边已经介绍过了, 使用方法和功能就直接略过了, whereis局限性太大, 不常用这里也就不介绍了。
1. find
find是Linux中一个搜索功能非常强大的工具, 它的主要功能是根据文件的属性, 查找对应的磁盘文件, 比如说我们常用的一些属性 文件名, 文件类型, 文件大小, 文件的目录深度 等, 下面基于这些常用数据来讲解一些具体的使用方法。
如果想用通过属性对文件进行搜索, 只需要指定出属性对应的参数就可以了, 下面将依次进行介绍。
1.1 文件名 (-name)
根据文件名进行搜索有两种方式: 精确查询和模糊查询。关于模糊查询必须要使用对应的通配符,最常用的有两个, 分别为 * 和 ?。其中 * 可以匹配零个或者多个字符, ?用于匹 ...
不管是在Linux还是其他操作系统中,关于数据的压缩和解压缩操作是经常被用到的。由于在windows平台文件的相关操作被傻瓜化了,到了Linux平台让好多小伙伴感觉有点束手无策,本篇文章中主要为大家讲解基于Linux的常用压缩包操作,格式包含:tar.gz, .tgz, .tar.bz2, .zip, .rar, .tar.xz。
1. tar在Linux操作系统中默认自带两个原始的压缩工具分别是 gzip和bzip2, 但是它们都有先天的缺陷, 不能打包压缩文件, 每个文件都会生成一个单独的压缩包, 并且压缩之后不会保留原文件, 这是一件叔能忍婶也不能忍的事情。
Linux中自带一个打包工具,叫做tar, 默认情况下该工具是不能进行压缩操作的,在这种情况下tar和gzip, bzip2就联姻了, 各自发挥各自的优势, Linux下最强大的打包压缩工具至此诞生。
我们在使用tar进行压缩和解压缩的时候, 只需要指定相对用的参数, 在其内部就会调用对应的压缩工具gzip或者bzip2完成指定的操作。
1.1 压缩 (.tar.gz .tar.bz2 .tgz)
如果使用tar完成文件压 ...
1. 切换用户
Linux是一个多用户的操作系统, 可以同时登陆多个用户, 因此很多时候需要在多个用户之间切换, 用户切换需要使用su或者su -。使用su只切换用户, 当前的工作目录不会变化, 但是使用 su -不仅会切换用户也会切换工作目录, 工作目录切换为当前用户的家目录。
从用户A切换到用户B, 如果还想再切换回用户A,可以直接使用 exit。
1234567891011121314151617# 只切换用户, 工作目录不变$ su 用户名# 举例:robin@OS:~/Linux$ su luffyPassword: # 需要输入luffy用户的密码luffy@OS:/home/robin/Linux$ # 工作目录不变# 切换用户和工作目录, 会自动跳转到当前用户的家目录中$ su - 用户名# 举例:robin@OS:~/Linux$ su - luffyPassword: # 需要输入luffy用户的密码luffy@OS:~$ pwd/home/luffy # 工作目录变成了luffy的家目录# 回到原来的用 ...
1. cd 命令
在Linux终端中如果想要进行工作路径的切换, 需要使用cd命令。在进行目录的切换的时候, 我们可以使用相对路径也可以使用绝对路径。
进入指定目录
1$ cd 目录名
目录名: 使用相对路径/绝对路径都可以, 该路径必须是一个有效路径
特殊的目录:
..: 表示当前目录的上一级目录, 使用cd .. 或者 cd ../都可以
. : 表示当前目录, 使用 .或者./都可以, cd .不会切换目录
进入家目录
每个用户(普通用户和root)都有一个属于自己的目录, 比如:
robin是普通用户, 家目录: /home/robin
luffy是用户, 家目录: /home/luffy
root是管理员用户, 家目录: /root
按照上边的格式来表示家目录书写起来比较麻烦, 有一种相对简单的写法就是使用 ~ 表示。如果是使用cd命令切换到家目录, 后边可以什么路径都不加, 这样也可以进入到当前用户的家目录。综上所述也就是通过cd进入到当前用户的家目录一共有三种不同的方式。
1 ...