Linux开发工具

一、包管理apt-get / apt

APT(Advanced Package Tool)是一个用于管理 Debian 及其衍生系统(如 Ubuntu)上软件包的工具。它提供了一系列命令用于安装、升级和删除软件包。apt-get 和 apt 是 APT 的两个主要命令行工具,虽然它们有相似的功能,但 apt 提供了更友好的用户界面。

apt-get

apt-get 是 APT 的一个底层工具,主要用于处理软件包的安装、升级和管理。常用命令包括:

  • 安装软件包sudo apt-get install <package-name>
  • 更新包列表sudo apt-get update
  • 升级已安装的软件包sudo apt-get upgrade
  • 全面升级系统sudo apt-get dist-upgrade
  • 删除软件包sudo apt-get remove <package-name>
  • 清理不再需要的包sudo apt-get autoremove

apt

apt 是一个较新的命令行工具,旨在提供更简洁的用户体验,它合并了apt-get和其他工具的一些功能。它适合日常使用,并提供了更多用户友好的选项。常用命令包括:

  • 安装软件包sudo apt install <package-name>
  • 更新包列表sudo apt update
  • 升级已安装的软件包sudo apt upgrade
  • 全面升级系统sudo apt full-upgrade (代替 dist-upgrade)
  • 删除软件包sudo apt remove <package-name>
  • 列出可用包apt list --available
  • 显示包信息apt show <package-name>

主要区别

  • 用户界面: apt 提供了更简洁的输出格式,易于阅读和理解。
  • 功能合并: apt合并了apt-get、apt-cache 和dkpg的一些功能,使得操作更加统一和简便。

总体来说,apt 是 apt-get 的一个更新和改进版,适合日常使用,而apt-get依然在脚本和复杂操作中发挥作用。

二、编辑器vim

1. 安装:       

 sudo apt-get install vim     # Debian/Ubuntu

2. 模式:

  • 普通模式 (Normal Mode): 默认模式,用于浏览和编辑文本。按 Esc 键可以进入此模式。
  • 插入模式 (Insert Mode): 用于插入和编辑文本。在普通模式下,按 iIaAo 或 O 进入插入模式。
  • 命令模式 (Command Mode): 用于执行命令和管理文件。在普通模式下,按 : 进入命令模式。
  • 可视模式 (Visual Mode): 用于选择文本。可以按 v 进入可视模式,按 V 进入行可视模式,按 Ctrl-v 进入块可视模式。

3. 基本操作:

  • 移动光标: 使用箭头键或 hjkl 移动光标(左、下、上、右)。
  • 插入文本: 在普通模式下按 i 进入插入模式,可以开始输入文本。
  • 删除文本: 在普通模式下,使用 x 删除光标所在位置的字符,使用 dd 删除整行,使用 d 配合运动命令删除文本。
  • 复制与粘贴: 使用 y 复制("yank")文本,使用 p 粘贴("put")文本。

4. 文件操作:

  • 保存文件: 在命令模式下输入 :w
  • 退出 Vim: 输入 :q 退出。如果未保存修改,可以使用 :q! 强制退出。
  • 保存并退出: 输入 :wq 或 :x

5. 查找和替换:

  • 查找: 在命令模式下输入 :/pattern 查找文本。
  • 替换: 在命令模式下输入 :%s/old/new/g 将文件中所有的 old 替换为 new

6. 多窗口和多标签页:

  • 分割窗口: 使用 :split 或 :vsplit 将窗口水平或垂直分割。
  • 切换窗口: 使用 Ctrl-w 和方向键或 hjkl 切换窗口。
  • 标签页: 使用 :tabnew 打开新标签页,使用 :tabnext 切换标签页。

7. 配置和插件:

  • 配置文件: Vim 的配置文件通常是 ~/.vimrc,用于设置个人偏好和自定义 Vim 行为。
  • 插件: Vim 支持多种插件,增强编辑功能。例如,使用 vim-plugVundle 或 Pathogen 等插件管理器来安装和管理插件。

三、编译器gcc

安装:

  • Linux: 可以通过包管理工具安装,例如在 Debian/Ubuntu 上使用 sudo apt-get install gcc

基本使用:

  • 编译单文件:

    gcc -o outputfile sourcefile.c

    这里,-o 选项指定输出文件的名称,sourcefile.c 是源代码文件。

  • 编译并调试:

    gcc -g -o outputfile sourcefile.c

    -g 选项生成调试信息,用于调试程序。

  • 优化:

    gcc -O2 -o outputfile sourcefile.c

    -O2 选项启用中级优化,-O3 用于更高层次的优化。

  • 警告:

    gcc -Wall -o outputfile sourcefile.c

    -Wall 选项启用大多数警告信息,帮助发现潜在问题。

编译多个文件:

gcc -o outputfile file1.c file2.c

链接库:

  • 静态链接库:

    gcc -o outputfile sourcefile.c -L/path/to/lib -lname

    -L 指定库的路径,-l 指定要链接的库(去掉前缀 lib 和后缀 .a)。

  • 动态链接库:

    gcc -o outputfile sourcefile.c -L/path/to/lib -lname

    动态链接库的前缀为 lib,后缀为 .so,运行时需要库文件可用。

解释对比
静态库

1.定义:

        静态库是一组已经编译好的目标文件(通常是 .o 文件的集合),它们被打包成一个单独的文件(通常以 .a 为扩展名),供链接器在编译时使用。

2.特点:

        编译时链接:静态库在编译程序时被链接到最终的可执行文件中。链接后,目标文件中使用的库函数的代码会被复制到最终的可执行文件中。

        独立性:生成的可执行文件不需要依赖外部的库文件,因为库的代码已经被静态地包含在可执行文件中。

        使用场景:适用于那些不常变化且大小适中的库,如标准库(例如 C 语言的 libc)。

3.创建和使用:

        创建静态库:使用编译器将多个目标文件打包成 .a 文件,例如 ar 工具。

        使用静态库:在编译时通过 -l 参数指定库的名称,例如 -lm 表示链接数学库 libm.a

        静态库在编译时被直接复制到最终的程序中。这意味着,最终程序不需要依赖外部的静态库文件,所有需要的代码都包含在程序里面。

        优点:程序运行时不需要依赖外部的库,因此可以很快速地启动和执行。

        缺点:可执行文件会比较大,因为所有的代码都被复制到了程序里面。如果库有更新或者需要替换,就需要重新编译整个程序。

(我的理解是有一个小工具箱,里面装满了你需要的工具,比如锤子、螺丝刀等。每次你想用这些工具时,你都可以从自己的工具箱里拿出来直接用。静态库就像这个工具箱,它把程序需要的所有代码和功能都打包在一起,编译后形成一个完整的可执行文件。)

动态库

1.定义:

        动态库是一个独立的文件,其包含的代码在程序运行时才会被加载到内存中,并且可以被多个程序共享使用。

2.特点:

        运行时链接:动态库在程序运行时由操作系统的动态链接器加载到内存中,并且可以被多个程序共享。

节省空间:不像静态库那样重复包含库的代码,动态库的代码只有一份实例,多个程序可以共享这一份代码。

更新和维护:动态库的更新不需要重新编译依赖它的程序,只需替换库文件即可。

3.创建和使用:

        创建动态库:使用编译器生成共享对象(Shared Object),通常以 .so 为扩展名。

        使用动态库:在编译时链接到动态库的头文件,并在运行时通过动态链接器加载库文件,例如使用 -l 参数和 -L 参数指定动态库的路径。

动态库在程序运行时才被加载到内存中使用,而不是在编译时被复制到程序里。这样的话,多个程序可以共享同一个动态库文件,这样节省了内存并且使得更新和维护变得更方便。

优点:节省内存空间,多个程序可以共享同一个库,更新和维护也比较方便。

缺点:程序在运行时需要依赖正确的库文件,加载和执行稍微慢一些。

(动态库则像是你住在一个大社区,有一个公共的工具库。每个人都可以从这个库里借用工具,这样大家可以节省空间并且更新工具也更方便,只需要更新一次公共库就好了。但是,如果公共库的管理员搞错了版本或者没有了某些工具,你就可能不能用某些工具了。

编译选项:

  • 标准版本:

    gcc -std=c99 -o outputfile sourcefile.c

    -std=c99 选项指定 C 语言的标准版本,可以用 c11c++11c++14 等其他标准版本。

  • 预处理:

    gcc -E sourcefile.c

    -E 选项仅执行预处理,输出预处理后的源代码。

  • 生成汇编代码:

    gcc -S sourcefile.c

    -S 选项生成汇编语言代码文件。

  • 生成目标文件:

    gcc -c sourcefile.c

    -c 选项生成目标文件(.o 文件),用于后续的链接。

四、自动化构建工具make

安装

sudo apt-get install make

使用

  1. 创建 Makefile

  2. 运行 make: 在包含 Makefile 的目录中,运行 make 命令会按照 Makefile 中的规则执行编译过程。默认目标是 Makefile 中的第一个目标(在本例中是 all)。

  3. 指定目标: 可以指定特定的目标来运行,如 make clean 会执行 clean 目标中的命令,删除生成的文件。

  4. 选项:

-B 或 --always-make强制 make 重新编译所有目标,即使它们已经是最新的
-C <dir>在指定的目录 <dir> 中执行 make
-d显示详细的调试信息,帮助跟踪 make 的执行过程
-f <file> 或 --file=<file>使用指定的 Makefile 文件
-i 或 --ignore-errors忽略命令执行中的错误
-j [N]指定并行执行的作业数。make -j4 同时运行 4 个作业
-k 或 --keep-going在遇到错误时继续执行其他目标
-l [load]仅在系统负载低于指定值时执行作业。例如 make -l 2.0
-n 或 --just-print显示将要执行的命令但不实际执行
-O启用优化,可能会改变 make 的行为以提高性能
-p 或 --print-data-base显示 make 的内部数据结构,用于调试
-s 或 --silent仅显示错误信息,隐藏其他输出
-t 或 --touch更新目标的时间戳,而不实际执行命令
-v 或 --version显示 make 的版本信息
-W <file> 或 --what-if=<file>检查指定文件是否需要重新生成

五、版本控制git

一、下拉整个工程代码
  • git clone URL(仓库地址)
  • 进入文件夹(比如我拉的是mastar,则在第一步之后 cd mastar)
  • git checkout master(切换你所拉取的分支的名称)
二、拉取最新更改(从远程仓库获取并合并最新的更改,以确保本地代码库与远程仓库保持同步)
  • git pull origin <分支名称>
        origin 是远程仓库的名称,<分支名称> 是要拉取的分支名
三、上传代码至远程仓库
1、 git branch查看当前分支
2、 git checkout < 分支名称> 切换到想上传的分支
3、 git status 查看本地修改内容
4、 git add <文件> 将更改的文件提交至暂存区    或使用 ' git add .' 添加所有更改
5、 git commit -m <提交信息>  提交更改(添加提交信息)
6、 git pull  拉取远程更新(确保你的分支与远程同步,如有冲突需要先解决冲突)
7、 git push origin <分支名称> 推送提交到远程仓库
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值