zoukankan      html  css  js  c++  java
  • c/c++

    编译


    • 目前C/C++编译器最流行的就是gcc与g++

    • 安装编译器,在windows下使用gcc与g++是通过安装MinGW实现的

    • MinGW(Minimalist GNU on Windows)安装后可以使用很多GNU(Linux下一个著名的项目)工具,包含了gcc/g++/gdb等工具(MinGWlib下有标准库;MinGWinclude下有头文件)

    • 把MinGW文件夹放入C盘根目录

    • 命令执行时('gcc'不是内部或外部命令),会在当前目录下查找名为gcc可执行文件,如果查不到就在系统环境变量path记录的路径里寻找gcc可执行文件(1.可以用绝对路径来调用gcc可执行文件;2.把gcc路径写入系统环境变量中),环境变量设置完后要重起windows

    • gcc虽然可以编译C++代码,但是不能进行C++的连接函数库操作,所以针对C++代码一般使用g++编译

    • 在cmd下编译时要在当前C/C++文件目录路径下进行

    • Ctrl + B执行上一次的编译命令;Ctrl+Shift+B选择执行哪个命令(C++ Single File编译/C++ Single File - Run运行)

    linux源码分析


    • 目前的Linux源码会把模块相关的文档说明保存在源码目录的documention的文件夹下,如果待分析的模块没有文档说明,这多少会增加定位关键源码文件的难度,但是不会导致我们找不到我们要分析的源码.

    • Linux内核结构

      1. 系统调用接口(SCI):open,read,write等系统调用

      2. 进程管理(PM):创建进程,删除进程,调度进程等

      3. 内存管理(MM):内存分配,管理等

      4. 虚拟文件系统(VFS):为多种文件系统提供统一的操作接口

      5. 网络协议栈:提供各种网络协议

      6. CPU架构相关代码(Arch):为的是提高移植性

      7. 设备驱动程序(DD):各种设备驱动,占到内核的70%左右代码

    • Linux源码目录

      1. Arch:存放处理器相关代码,下设子目录对应具体的cpu,每个子目录有boot(系统引导),mm(存储管理),以及kernel(系统调用)三个子目录

      2. Include:内核所需的大部分头文件目录,与平台无关的在include/linux子目录下,与平台相关的则放在include相应的子目录中

      3. fs:存放各种文件系统的实现代码

      4. init:init子目录包含核心的初始化代码(非系统引导代码),其中包含两个文件main.c和version.c,可以用来研究核心如何工作

      5. ipc:包含核心进程间的通信代码

      6. kernel:包含内核管理的核心代码。与硬件相关代码放在arch/*/kernel目录下

      7. mm:包含了所有的内存管理代码。与硬件相关的内存管理代码位于arch/*/mm目录下

      8. scripts:包含用于配置核心的脚本文件

      9. lib:包含了核心的库代码,与硬件相关的库代码被放在arch/*/lib/目录下

    C++笔记


    • 引用传参是C++的特性,C语言不支持引用传参

    • 但实际在使用时候C语法却可以使用引用传参

    • 要使用C++的多态必须要使用虚函数

    • 必须要使用指针或引用

    • 一个类只有有了虚函数才会有一张虚函数表,多态就是通过这张表实现的

    • 对象间的赋值并不能把虚表从一个类对象赋值给另一个对象(对角访问虚函数并没有通过虚函数表)

    发恳写代码
  • 相关阅读:
    2014 中华架构师大会 回想
    mybatis重拾---部署官方demo
    D 语言学习感受
    D语言学习
    D语言简介
    C++输入cin详解
    C++源文件的后缀名问题
    C 函数指针详解
    Linux下的五个查找命令:grep、find、locate、whereis、which
    Qt---QFtp上传、下载二进制文件
  • 原文地址:https://www.cnblogs.com/Mdh1991/p/5388336.html
Copyright © 2011-2022 走看看