Ubuntu使用笔记

Ubuntu安装

  • 登陆ubuntu官网,下载对应的desktop发行版本,link;

  • 登陆链接,下载win32diskImage镜像软件,制作系统U盘;

  • 磁盘管理压缩卷,查看磁盘格式是否为GPT分区;

  • 对于联想拯救者,插上U盘,重启电脑,一直按F2,进入Bios界面,确定是运行U盘启动;

  • 然后一直按F12,进入选择界面,选择flash等U盘,开始系统安装;

  • 自己设立分区,引导区,swap,根载点/,/home等四个分区。

  • 系统时间同步

    1
    2
    
    sudo apt install ntpdate
    ...
    
  • 启动菜单默认项

    • 一个是bios的确定ubuntu启动界面在第一位
    • 一个是ubuntu里面的grub文件确定默认进入windows
    1
    
    sudo gedit /ect/default/grub
    

Ubuntu常见命令行

  • apt 可以看作 apt-get 和 apt-cache 命令的子集, 可以为包管理提供必要的命令选项。

  • apt-get 虽然没被弃用,但作为普通用户,还是应该首先使用 apt。

  • 上下箭头的使用

  • tab键的补全

  • ctrl+alt+T打开终端

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    sudo:super user do
    su:switch user
    sudo su
    sudo mkdir
    cd
    ls
    sudo apt install
    pwd
    tar -xzvf CLion-2016.2.2.tar.gz  
    sudo tar -C 目标文件夹 -xzvf xxx.tar.gz
    rmdir 目录名              #删除一个空目录
    rm -r 目录名              #删除一个非空目录,递归删除子目录
    rm 文件名                 #删除文件
    sudo apt install cmake
    sudo apt remove cmake
    whereis python
    echo $PATH
    date 
    reboot
    poweroff
    
  • 系统命令

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
    top:动态查看进程活动,加强版任务管理器
    # 可以按ctrl+c退出查看
    # https://blog.csdn.net/yjclsx/article/details/81508455
    
    ps -aux:a为显示所有进程
    
    pidof
    
    kill [pid]
    
    kill all
    
    free -h:查看内存使用量信息
    
    ifconfig :配置网卡和查看网络状态信息
    #主要看网卡名称,inet的IP地址,ether后面的mac地址
    
    uname -a
    #查看系统版本和系统内核
    
    uptime
    #查看负载,最后三个数为1,5,15分钟内的平均负载,越低越好
    tyc@tyc:~$ uptime 
     20:59:43 up 10:27,  1 user,  load average: 1.36, 0.82, 0.70
    
  • 压缩和解压

    1
    2
    3
    4
    5
    6
    
    #解压
    tar -zxvf CLion-2016.2.2.tar.gz  
    sudo tar -C 目标文件夹 -xzvf xxx.tar.gz
    
    #压缩,将/ect目录通过gzip格式进行打包为ect.tar.gz文件
    tar -zcvf ect.tar.gz /ect
    

Ubuntu文件与目录管理

  • Linux的目录结构为树状结构,最顶级的目录为根目录 /。其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。

  • 绝对路径: 路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录。

  • 相对路径: 路径的写法,不是由 / 写起,由./或者../写起。例如由 /usr/share/doc 要到 /usr/share/man 底下时,可以写成: cd ../man 这就是相对路径的写法。

    1
    2
    
    ./   :本路经的其他文件
    ../  :上一级路径的文件
    
  •  1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    ls(英文全拼:list files): 列出目录及文件名
    cd(英文全拼:change directory):切换目录
    pwd(英文全拼:print work directory):显示目前的目录
    mkdir(英文全拼:make directory):创建一个新的目录
    rmdir(英文全拼:remove directory):删除一个空的目录
    rm(英文全拼:remove):删除非空目录
    cp(英文全拼:copy file): 复制文件或目录
    mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称
    
    你可以使用 man [命令] 来查看各个命令的使用文档,如 :man cp。
    
  • ls (列出目录)

    list files。

    在Linux系统当中, ls 命令可能是最常被运行的。

    语法:

    1
    2
    3
    
    [root@www ~]# ls [-aAdfFhilnrRSt] 目录名称
    [root@www ~]# ls [--color={never,auto,always}] 目录名称
    [root@www ~]# ls [--full-time] 目录名称
    

    选项与参数:

    • -a :全部的文件,连同隐藏文件( 开头为 . 的文件) 一起列出来(常用)
    • -d :仅列出目录本身,而不是列出目录内的文件数据(常用)
    • -l :长数据串列出,包含文件的属性与权限等等数据;(常用)

    将家目录下的所有文件列出来(含属性与隐藏档)

    1
    
    [root@www ~]# ls -al 
    
  • cd (切换目录)

    cd是Change Directory的缩写,这是用来变换工作目录的命令。

    语法:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    
     cd [相对路径或绝对路径]
    
    #使用绝对路径切换到 runoob 目录
    [root@www ~]# cd /root/runoob/
    
    #使用相对路径切换到 runoob 目录
    [root@www ~]# cd ./runoob/
    
    # ~表示回到自己的家目录,亦即是 /home/tyc 这个目录
    tyc@tyc:~$ cd ~
    tyc@tyc:~$ pwd
    /home/tyc
    
    # 表示去到目前的上一级目录,亦即是 /root 的上一级目录的意思;
    [root@www ~]# cd ../
    
  • pwd (显示目前所在的目录)

    pwd 是 Print Working Directory 的缩写,也就是显示目前所在目录的命令。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    tyc@tyc:/home$ cd ~
    tyc@tyc:~$ ls
    公共的  文档  CLionProjects                snap
    模板    下载  ide-eval-resetter2.1.12.zip
    视频    音乐  PycharmProjects
    图片    桌面  QtProjects
    tyc@tyc:~$ cd CLionProjects/
    tyc@tyc:~/CLionProjects$ pwd
    /home/tyc/CLionProjects
    tyc@tyc:~/CLionProjects$ 
    
  • mkdir (创建新目录)

    如果想要创建新的目录的话,那么就使用mkdir (make directory)吧。

    语法:

    1
    
    mkdir [-mp] 目录名称
    

    选项与参数:

    • -m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
    • -p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!

    实例:请到/tmp底下尝试创建数个新目录看看:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
    [root@www ~]# cd /tmp
    [root@www tmp]# mkdir test    <==创建一名为 test 的新目录
    [root@www tmp]# mkdir test1/test2/test3/test4
    mkdir: cannot create directory `test1/test2/test3/test4': 
    No such file or directory       <== 没办法直接创建此目录啊!
    [root@www tmp]# mkdir -p test1/test2/test3/test4
    
    
    tyc@tyc:~/CLionProjects$ cd ~
    tyc@tyc:~$ ls
    公共的  文档  CLionProjects                snap
    模板    下载  ide-eval-resetter2.1.12.zip
    视频    音乐  PycharmProjects
    图片    桌面  QtProjects
    tyc@tyc:~$ mkdir test1/test2
    mkdir: 无法创建目录 “test1/test2”: 没有那个文件或目录
    tyc@tyc:~$ mkdir -p test1/test2
    tyc@tyc:~$ ls
    公共的  文档  CLionProjects                snap
    模板    下载  ide-eval-resetter2.1.12.zip  test1
    视频    音乐  PycharmProjects
    图片    桌面  QtProjects
    tyc@tyc:~$ 
    
  • rmdir (删除空的目录)

    语法:

    1
    
     rmdir [-p] 目录名称
    

    选项与参数:

    • -p : 从该目录起,一次删除多级空目录
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    
    tyc@tyc:~$ mkdir -p test1/test2
    tyc@tyc:~$ ls
    公共的  文档  CLionProjects                snap
    模板    下载  ide-eval-resetter2.1.12.zip  test1
    视频    音乐  PycharmProjects
    图片    桌面  QtProjects
    tyc@tyc:~$ rmdir -p test1/test2
    tyc@tyc:~$ ls
    公共的  文档  CLionProjects                snap
    模板    下载  ide-eval-resetter2.1.12.zip
    视频    音乐  PycharmProjects
    图片    桌面  QtProjects
    tyc@tyc:~$ 
    
  • rm(删除非空目录)

    rm命令

    -f:在删除过程中不给任何指示,直接删除。

    -r:将参数中列出的全部目录和子目录都递归地删除。

    -i:与-f选项相反,交互式删除,在删除每个文件时都给出提示。

    删除文件可以直接使用rm命令,若删除目录则必须配合选项"-r",例如:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    
    tyc@tyc:~$ mkdir -p test1/test2
    tyc@tyc:~$ ls
    公共的  文档  CLionProjects                snap
    模板    下载  ide-eval-resetter2.1.12.zip  test1
    视频    音乐  PycharmProjects
    图片    桌面  QtProjects
    tyc@tyc:~$ rm -r test1/
    tyc@tyc:~$ ls
    公共的  文档  CLionProjects                snap
    模板    下载  ide-eval-resetter2.1.12.zip
    视频    音乐  PycharmProjects
    图片    桌面  QtProjects
    tyc@tyc:~$ 
    
  • cp (复制文件或目录)

    cp 即拷贝文件和目录。

    语法:

    [root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination)
    [root@www ~]# cp [options] source1 source2 source3 .... directory
    

    选项与参数:

    • -a: 相当于 -pdr 的意思,至于 pdr 请参考下列说明;(常用)
    • -d: 若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
    • -f: 为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
    • -i: 若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
    • -l: 进行硬式连结(hard link)的连结档创建,而非复制文件本身;
    • -p: 连同文件的属性一起复制过去,而非使用默认属性(备份常用);
    • -r: 递归持续复制,用於目录的复制行为;(常用)
    • -s: 复制成为符号连结档 (symbolic link),亦即『捷径』文件;
    • -u: 若 destination 比 source 旧才升级 destination !

    用 root 身份,将 root 目录下的 .bashrc 复制到 /tmp 下,并命名为 bashrc

    1
    2
    3
    
    [root@www ~]# cp ~/.bashrc /tmp/bashrc
    [root@www ~]# cp -i ~/.bashrc /tmp/bashrc
    cp: overwrite `/tmp/bashrc'? n  <==n不覆盖,y为覆盖
    
  • mv

    移动一个source 到destinatoin 语法:mv [-fiu] source destination

    参数解释:参数为可选项

    f:如果目标文件以存在,不会询问直接覆盖已存在的文件

    i:如果目标文件以存在,会询问是否覆盖已存在的文件

    u:如果目标文件已存在,并且源文件(source)比较新,才会升级

    1
    2
    3
    4
    5
    6
    7
    8
    
    a)source 路径与destination路径相同下使用mv:重命名文件
    命令:mv test test1 --将test重命名为test1
    
    b)将文件或目录移动到目录中
    命令:mv test mvtest/
    
    b)将多个文件或目录移动到其他目录中
    命令:mv 11 22 33 mvtest/
    

Linux 文件内容查看

Linux系统中使用以下命令来查看文件的内容:

  • cat 由第一行开始显示文件内容
  • tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
  • nl 显示的时候,顺道输出行号!
  • more 一页一页的显示文件内容
  • less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
  • head 只看头几行
  • tail 只看尾巴几行

你可以使用 **man [命令]**来查看各个命令的使用文档,如 :man cp。

Linux apt 命令

apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。

apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

apt 命令执行需要超级管理员权限(root)。

  • apt 语法

    1
    2
    3
    4
    5
    
    apt [options] [command] [package ...]
    
    - options:可选,选项包括 -h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。
    - command:要进行的操作。
    - package:安装的包名。
    
  • apt 常用命令

    • 列出所有可更新的软件清单命令:sudo apt update

    • 升级软件包:sudo apt upgrade

      列出可更新的软件包及版本信息:apt list --upgradeable

      升级软件包,升级前先删除需要更新软件包:sudo apt full-upgrade

    • 安装指定的软件命令:sudo apt install <package_name>

      安装多个软件包:sudo apt install <package_1> <package_2> <package_3>

    • 更新指定的软件命令:sudo apt update <package_name>

    • 显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:sudo apt show <package_name>

    • 删除软件包命令:sudo apt remove <package_name>

    • 清理不再使用的依赖和库文件: sudo apt autoremove

    • 移除软件包及配置文件: sudo apt purge <package_name>

    • 查找软件包命令: sudo apt search <key_word>

    • 列出所有已安装的包:apt list --installed

    • 列出所有已安装的包的版本信息:apt list --all-versions

vim使用

实际上可以直接用gedit进行编辑,这个是图形界面,可以使用鼠标,对从windows上过来的更友好。

基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)。 这三种模式的作用分别是:

命令模式:

用户刚刚启动 vi/vim,便进入了命令模式。

此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。

以下是常用的几个命令:

  • i 切换到输入模式,以输入字符。
  • x 删除当前光标所在处的字符。
  • : 切换到底线命令模式,以在最底一行输入命令。

若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。

命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

输入模式

在命令模式下按下i就进入了输入模式。

在输入模式中,可以使用以下按键:

  • 字符按键以及Shift组合,输入字符
  • ENTER,回车键,换行
  • BACK SPACE,退格键,删除光标前一个字符
  • DEL,删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • HOME/END,移动光标到行首/行尾
  • Page Up/Page Down,上/下翻页
  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
  • ESC,退出输入模式,切换到命令模式

底线命令模式

在命令模式下按下:(英文冒号)就进入了底线命令模式。

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

在底线命令模式中,基本的命令有(已经省略了冒号):

  • q 退出程序
  • w 保存文件
  • !表示强制执行
  • :wq
  • :q!

按ESC键可随时退出底线命令模式。

简单的说,我们可以将这三个模式想成底下的图标来表示:

Ubuntu换源

  • 根据版本的不同,参考阿里云网站,确定镜像网站。

  • 备份网站列表

    1
    
    sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
    
  • 打开编辑,更换源

    1
    
    sudo gedit /etc/apt/sources.list
    
  • 更新并升级

    1
    
    sudo apt-get update && sudo apt-get upgrade
    

Ubuntu设置字体

  • 安装桌面配置工具

    1
    
    sudo apt  install  gnome-tweaks
    
  • Alt+F2 在运行窗口输入 gnome-tweaks 命令,然后回车。

  • 紧接着会打开优化窗口,可以设置字号和缩放比例。

Ubuntu安装VScode

  • 进入官网
  • 点击.deb下载安装包;
  • sudo dpkg -i xxx.deb
  • 命令行通过code 远程启动vscode。

Ubuntu安装Clion

  • 得到Linux版Clion的.tar.gz的压缩包:去官网直接下载 https://www.jetbrains.com/clion/

  • 解压——tar -zxvf xxx.tar.gz

  • 运行脚本

    1
    2
    
    cd clion-2020.2.2/bin/  
    ./clion.sh  
    
  • 找到Create Desktop Entry,创建桌面快捷键

  • 寻找破解插件,新建工程拖拽.zip文件即可。

  • 安装pycahrm和idea同理

Ubuntu安装pycharm

  • 官网下载社区版 .tar.gz 文件;
  • tar -zxvf xxx.tar.gz 解压。
  • 进入bin/pycharm.sh 即执行文件,通过sh pycharm.sh 即可远程打开pycharm软件。

Ubuntu安装anaconda3

  • 其实直接安装Miniconda就好了,不用这么臃肿,参考

  • 下载.sh文件,登陆清华镜像 website

  • sudo bash Anaconda3-2021.05-Linux-x86_64.sh

  • 回车键,进入注册信息页面

  • q跳过阅读,yes

  • 默认安装在用户目录下,直接回车即可安装;若想自定义安装目录,直接输入安装目录,回车即可。

  • Do you wish the installer to initialize Anaconda3 by running conda init ? 输入 no,回车

    • 输入yes会自动配置环境变量
  • 修改环境变量

    1
    2
    3
    4
    
    sudo gedit ~/.bashrc
    #在文件最后一行,添加
    export PATH="/opt/anaconda3/bin:$PATH"
    #保存退出
    
  • sudo source ~/.bashrc

    • 如果返回找不到命令

    • 1
      2
      
      sudo su
      source ~/.bashrc
      
  • 测试 conda --version 判断是否安装成功

  • 常见命令,linux也有图形界面,添加路径之后直接在终端输入 anaconda-navigator 即可打开gui界面

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    
    #创建虚拟环境
    conda create -n your_env_name python=X.X3.63.7
    
    #激活虚拟环境
    source activate your_env_name(虚拟环境名称)
    
    #退出虚拟环境
    source deactivate your_env_name(虚拟环境名称)
    
    #删除虚拟环境
    conda remove -n your_env_name(虚拟环境名称) --all
    
    #查看安装了哪些包
    conda list
    
    #安装包
    conda install package_name(包名)
    conda install scrapy==1.3 # 安装指定版本的包
    conda install -n 环境名 包名 # 在conda指定的某个环境中安装包
    
    #查看当前存在哪些虚拟环境
    conda env list 
    #或 
    conda info -e
    #或
    conda info --envs
    
    #检查更新当前conda
    conda update conda
    
    #更新anaconda
    conda update anaconda
    
    #更新所有库
    conda update --all
    
    #更新python
    conda update python
    

Ubuntu安装GCC

  • GNU 编译器集合是一系列用于语言开发的编译器和库的集合,包括: C, C++, Objective-C, Fortran, Ada, Go, and D等编程语言。很多开源项目,包括 Linux kernel 和 GNU 工具,都是使用 GCC 进行编译的。

  • 默认的 Ubuntu 软件源包含了一个软件包组,名称为 “build-essential”,它包含了 GNU 编辑器集合,GNU 调试器,和其他编译软件所必需的开发库和工具。

    1
    2
    
    sudo apt update
    sudo apt install build-essential
    

    这个命令将会安装一系列软件包,包括gcc,g++,和make

  • 你可能还想安装关于如何使用 GNU/Linux开发的手册。

    1
    
    sudo apt-get install manpages-dev
    
  • 通过运行下面的命令,打印 GCC 版本,来验证 GCC 编译器是否被成功地安装。

    1
    2
    3
    
    gcc --version
    
    #输出默认版本
    
  • 输入下面的命令,安装多个想要的 GCC 和 G++ :

    1
    
    sudo apt install gcc-8 g++-8 gcc-9 g++-9 gcc-10 g++-10
    

    下面的命令配置每一个版本,并且设置了优先级。默认的版本是拥有最高优先级的那个,在我们的场景中是gcc-10

    1
    2
    3
    
    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 100 --slave /usr/bin/g++ g++ /usr/bin/g++-10 --slave /usr/bin/gcov gcov /usr/bin/gcov-10
    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 90 --slave /usr/bin/g++ g++ /usr/bin/g++-9 --slave /usr/bin/gcov gcov /usr/bin/gcov-9
    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 80 --slave /usr/bin/g++ g++ /usr/bin/g++-8 --slave /usr/bin/gcov gcov /usr/bin/gcov-8
    

    以后,如果你想修改默认的版本,使用update-alternatives命令:

    1
    
    sudo update-alternatives --config gcc
    

    输出:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    There are 3 choices for the alternative gcc (providing /usr/bin/gcc).
    
      Selection    Path            Priority   Status
    ------------------------------------------------------------
    * 0            /usr/bin/gcc-10   100       auto mode
      1            /usr/bin/gcc-10   100       manual mode
      2            /usr/bin/gcc-8    80        manual mode
      3            /usr/bin/gcc-9    90        manual mode
    
    Press <enter> to keep the current choice[*], or type selection number:
    

    你将会被展示一系列已经安装在你的 Ubuntu 系统上的 GCC 版本。输入你想设置为默认的 GCC 版本,并且按回车Enter

    这个命令将会创建符号链接到指定版本的 GCC 和 G++。

Linux上编译调试C++项目

  • gcc编译

  • gdb调试

  • makefile编写项目文件

  • 以上就可以结合socket进行网络服务器实战了

  • 参考

  • 在Shell脚本中使用make命令来进行编译,尤其在C/C++开发中,make命令通过makefile文件中描述源程序之间的依赖关系进行自动编译;makefile文件是按照规定格式编写,需说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系;很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂。利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和makefile工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系。而且如此多的源文件,如果每次都要键入gcc命令进行编译的话,那对程序员来说简直就是一场灾难。而make工具则可自动完成编译工作,并且可以只对程序员在上次编译后修改过的部分进行编译。因此,有效的利用make和makefile工具可以大大提高项目开发的效率。

  • 通常,编译过程分为预处理(.i文件)、生成汇编语言(.s文件)、生成机器代码(.o文件)、链接生成可执行文件这四部分组成。

  • 用g++编译文件时,可用 g++ demo.cpp 直接编译,其默认生成a.out的可执行文件;或 g++ -o demo demo.cpp 生成名为demo的可执行文件。

gcc和g++

gcc 和 g++ 的区别无非就是调用的编译器不同, 并且传递给链接器的参数不同.

具体而言:

  • g++ 会把 .c 文件当做是 C++ 语言 (在 .c 文件前后分别加上 -xc++-xnone, 强行变成 C++), 从而调用 cc1plus 进行编译.

    g++ 遇到 .cpp 文件也会当做是 C++, 调用 cc1plus 进行编译.

    g++ 还会默认告诉链接器, 让它链接上 C++ 标准库.

  • gcc 会把 .c 文件当做是 C 语言. 从而调用 cc1 进行编译.

    gcc 遇到 .cpp 文件, 会处理成 C++ 语言. 调用 cc1plus 进行编译.

    gcc 默认不会链接上 C++ 标准库.

gcc、make和cmake的联系和区别

Linux下写程序大体步骤为:

1.用编辑器编写源代码,如.c文件。(gdb调试)

2.用编译器编译代码生成目标文件,如.o。

3.用链接器连接目标代码生成可执行文件,如.exe。

但如果源文件太多,一个一个编译时就会特别麻烦,于是人们想到,为什么不设计一种类似批处理的程序,来批处理编译源文件呢,于是就有了make工具,它是一个自动化编译工具,你可以使用一条命令实现完全编译。但是你需要编写一个规则文件,make依据它来批处理编译,这个文件就是makefile,所以编写makefile文件也是一个程序员所必备的技能。

对于一个大工程,编写makefile实在是件复杂的事,于是人们又想,为什么不设计一个工具,读入所有源文件之后,自动生成makefile呢,于是就出现了cmake工具,它能够输出各种各样的makefile或者project文件,从而帮助程序员减轻负担。但是随之而来也就是编写cmakelist文件,它是cmake所依据的规则。所以在编程的世界里没有捷径可走,还是要脚踏实地的。

所以流程如下:

  • 所以,gcc、make和cmake都是编译的方式,只是后一个更方便快捷,都是生成的目标文件.o/可执行文件.exe

CMake

  • refer

  • 1
    
    sudo snap install cmake --classic
    
  • 安装

    • sudo apt install cmake

    • 以上可能安装的不是最新版本,可以上官网下载自行安装

      解压之后安装cmake

      1
      2
      
      cd cmake-3.21.2-rc4 
      ./bootstrap
      

Clion的配置

  • 确认已经安装gcc g++ gbd make cmake
  • 打开clion的设置,会自动寻找对应的编译调试器
  • make直接sudo apt-get install make

安装Qt

  • refer

  • 安装必要的库

    • 1
      2
      3
      4
      
      安装 g++
      sudo apt-get install g++
      安装 openGL 库
      sudo apt-get install mesa-common-dev
      
  • 添加环境变量

    • 1
      2
      3
      4
      5
      6
      
      gedit ~/.bashrc
      #在文档添加
      export PATH="/opt/Qt5.12.9/Tools/QtCreator/bin:$PATH"
      #保存退出之后
      sudo su
      source ~/.bashrc
      
  • 然后就可以直接输入命令行 qtcreator 来打开qt了。

Ubuntu安装基本的媒体编解码器

ubuntu-restricted-extras 是一个包含各种基本软件,如 Flash 插件、unrargstreamer、mp4、Ubuntu 中的 Chromium 浏览器的编解码器等的软件包。

由于这些软件不是开源软件,并且其中一些涉及软件专利,因此 Ubuntu 默认情况下不会安装它们。你必须使用 multiverse 仓库,它是 Ubuntu 专门为用户提供非开源软件而创建的仓库。

由于 ubuntu-restrcited-extras 软件包在 multiverse 仓库中,因此你应验证系统上已启用 multiverse 仓库:

1
sudo add-apt-repository multiverse

然后你可以使用以下命令安装:

1
sudo apt install ubuntu-restricted-extras

关于Ubuntu的Firefox无法播放音视频的解决办法

  • 安装falsh

    1
    2
    
    sudo apt install flashplugin-installer 
    sudo apt install browser-plugin-freshplayer-pepperflash 
    
  • 安装支持HTML5的插件

    1
    
    sudo apt install ffmpeg
    

su认证失败解决方法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
tyc@tyc:~$ su
密码: 
su: 认证失败
tyc@tyc:~$ sudo passwd
新的 密码: 
重新输入新的 密码: 
passwd:已成功更新密码
tyc@tyc:~$ su
密码: 
root@tyc:/home/tyc#