摘要: 7.2.1 套接字(socket)概述 7.2.2 地址及顺序处理 7.2.3 套接字编程 套接字定义 在Linux中的网络编程是通过socket接口来进行的。套接字(socket)是一种特殊的I/O接口,它也是一种文件描述符。socket是一种常用的进程之间通信机制,通过它不仅能实现本地机器上的进 阅读全文
posted @ 2022-12-25 21:32 cnetsa 阅读(32) 评论(0) 推荐(0)
摘要: 7.1.1 TCP/IP的分层模型7.1.2 TCP/IP的分层模型特点7.1.3 TCP/IP核心协议 OSI协议参考模型,它是基于国际标准化组织(ISO)的建议发展起来的,它分为7个层次:应用层、表示层、会话层、传输层、网络层、数据链路层及物理层。 这个7层的协议模型虽然规定得非常细致和完善,但 阅读全文
posted @ 2022-12-25 21:22 cnetsa 阅读(94) 评论(0) 推荐(0)
摘要: 所谓线程私有数据是除局部数据和全局数据的第三类数据,这个概念是随着线程的诞生而提出来的。 假设你的一个线程里面嵌套调用了很多函数,而你又需要在这些函数之间使用一个公共的变量,如果在单线程环境中,我们是不是声明一个全局变量就解决问题了呢? 但是我们想使这个“公共变量”只属于我们当前这个实例线程,其他线 阅读全文
posted @ 2022-12-25 21:21 cnetsa 阅读(64) 评论(0) 推荐(0)
摘要: pthread_create()函数的第二个参数(pthread_attr_t *attr)表示线程的属性。 如果该值设为NULL,就是采用默认属性,线程的多项属性都是可以更改的。 这些属性主要包括绑定属性、分离属性、堆栈地址、堆栈大小以及优先级。其中系统默认的属性为非绑定、非分离、缺省1M的堆栈以 阅读全文
posted @ 2022-12-25 21:18 cnetsa 阅读(45) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-12-25 21:08 cnetsa 阅读(17) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-12-25 21:04 cnetsa 阅读(22) 评论(0) 推荐(0)
摘要: 消息队列就是一些消息的列表。 用户可以在消息队列中添加消息和读取消息等。从这点上看,消息队列具有一定的FIFO特性,但是它可以实现消息的随机查询,比FIFO具有更大的优势。同时,这些消息又是存在于内核中的,由“队列ID”来标识。 阅读全文
posted @ 2022-12-25 21:02 cnetsa 阅读(26) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-12-25 20:59 cnetsa 阅读(59) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-12-25 20:57 cnetsa 阅读(27) 评论(0) 推荐(0)
摘要: 信号概述 信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式 信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件。它可以在任何时候发给某一进程,而无需知道该进程的状态。 如果该进程当前并未处于执行态,则该信号就由内核保存起来,直到该进程 阅读全文
posted @ 2022-12-25 20:52 cnetsa 阅读(85) 评论(0) 推荐(0)
摘要: 管道简介Linux的管道主要包括两种:无名管道和有名管道。无名管道特点 它只能用于具有亲缘关系的进程之间的通信(也就是父子进程或者兄弟进程之间)。 它是一个半双工的通信模式,具有固定的读端和写端。 管道也可以看成是一种特殊的文件,对于它的读写也可以使用普通的read()、write()等函数。但是它 阅读全文
posted @ 2022-12-25 20:51 cnetsa 阅读(91) 评论(0) 推荐(0)
摘要: Linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的 集合System V IPC(贝尔实验室)和socket的进程间通信机制(BSD)的优势 Unix进程间通信(IPC)方式包括管道、FIFO以及信号。 System V进程间通信(IPC)包括System V消息队列、Sy 阅读全文
posted @ 2022-12-25 20:46 cnetsa 阅读(58) 评论(0) 推荐(0)
摘要: 守护进程,也就是通常所说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件 守护进程常常在系统引导装入时启动,在系统关闭时终止 Linux系统有很多守护进程,大多数服务都是用守护进程实现的 在Linux中,每 阅读全文
posted @ 2022-12-25 20:27 cnetsa 阅读(624) 评论(0) 推荐(0)
摘要: fork() fork()函数用于从已存在的进程中创建一个新进程。 新进程称为子进程,而原进程称为父进程。 使用fork()函数得到的子进程是父进程的一个复制品,它从父进程处继承了整个进程的地址空间,包括进程上下文、代码段、进程堆栈、内存信息、打开的文件描述符、信号控制设定、进程优先级、进程组号、当 阅读全文
posted @ 2022-12-25 20:18 cnetsa 阅读(28) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-12-25 20:00 cnetsa 阅读(23) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-12-25 19:59 cnetsa 阅读(25) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-12-25 19:55 cnetsa 阅读(45) 评论(0) 推荐(0)
摘要: 标准I/O提供流缓冲的目的是尽可能减少使用read()和write()等系统调用的数量。标准I/O提供了3种类型的缓冲存储。 全缓冲:在这种情况下,当填满标准I/O缓存后才进行实际I/O操作。对于存放在磁盘上的文件通常是由标准I/O库实施全缓冲的。标准I/O尽量多读写文件到缓冲区,当缓冲区已满或手 阅读全文
posted @ 2022-12-25 19:53 cnetsa 阅读(46) 评论(0) 推荐(0)
摘要: I/O处理模型 阻塞I/O模型 非阻塞模型 I/O多路转接模型 信号驱动I/O模型 异步I/O模型select和poll的I/O转接模型是处理I/O复用的一个高效的方法 阅读全文
posted @ 2022-12-25 19:51 cnetsa 阅读(31) 评论(0) 推荐(0)
摘要: 文件锁包括建议性锁和强制性锁。 建议性锁要求每个上锁文件的进程都要检查是否有锁存在,并且尊重已有的锁。 在一般情况下,内核和系统都不使用建议性锁。强制性锁是由内核执行的锁,当一个文件被上锁进行写入操作的时候,内核将阻止其他任何文件对其进行读写操作。采用强制性锁对性能的影响很大,每次读写操作都必须检查 阅读全文
posted @ 2022-12-25 19:42 cnetsa 阅读(243) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-12-25 19:39 cnetsa 阅读(22) 评论(0) 推荐(0)
摘要: 对于Linux而言,所有对设备和文件的操作都是使用文件描述符来进行的。文件描述符是一个非负的整数,它是一个索引值,并指向在内核中每个进程打开文件的记录表。当打开一个现存文件或创建一个新文件时,内核就向进程返回一个文件描述符;当需要读写文件时,也需要把文件描述符作为参数传递给相应的函数。 一个进程启动 阅读全文
posted @ 2022-12-25 19:38 cnetsa 阅读(55) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-12-25 19:37 cnetsa 阅读(16) 评论(0) 推荐(0)
摘要: Linux系统成功的关键因素之一就是具有与其他操作系统和谐共存的能力。Linux的文件系统由两层结构构建。第一层是虚拟文件系统(VFS),第二层是各种不同的具体的文件系统。 VFS在linux系统中的位置如图: 阅读全文
posted @ 2022-12-25 19:36 cnetsa 阅读(41) 评论(0) 推荐(0)
摘要: 系统命令相对API更高了一层,它实际上一个可执行程序,它的内部引用了用户编程接口(API)来实现相应的功能 ,它们之间的关系如图: 阅读全文
posted @ 2022-12-25 19:36 cnetsa 阅读(58) 评论(0) 推荐(0)
摘要: 在Linux中,用户编程接口(API)遵循了在Unix中最流行的应用编程界面标准——POSIX标准。POSIX标准是由IEEE和ISO/IEC共同开发的标准系统。该标准基于当时现有的Unix实践和经验,描述了操作系统的系统调用编程接口(实际上就是API),用于保证应用程序可以在源代码一级上在多种操作 阅读全文
posted @ 2022-12-25 19:32 cnetsa 阅读(23) 评论(0) 推荐(0)
摘要: 系统调用是指操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组“特殊”接口获得操作系统内核提供的服务。例如用户可以通过进程控制相关的系统调用来创建进程、实现进程之间的通信等。 在Linux中,为了更好地保护内核空间,将程序的运行空间分为内核空间和用户空间(也就是常称的内核态和用户态) 阅读全文
posted @ 2022-12-25 19:32 cnetsa 阅读(72) 评论(0) 推荐(0)
摘要: /etc/inittab格式id:runlevels:action:processid:ID 意义对BusyBox init 和 System V init 是不同的,此处ID指明程序的控制tty,如果程序不需要交互, 则ID为空runlevels:BusyBox init 不支持runlevel, 阅读全文
posted @ 2022-12-25 18:46 cnetsa 阅读(56) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-12-25 18:43 cnetsa 阅读(24) 评论(0) 推荐(0)
摘要: 获取源码$ wget -c http://www.busybox.net/downloads/busybox-1.23.2.tar.bz2解压并进入源码目录$ tar -jxvf busybox-1.23.2.tar.bz2$ cd busybox-1.23.2/配置$ make menuconfi 阅读全文
posted @ 2022-12-25 18:38 cnetsa 阅读(140) 评论(0) 推荐(0)
摘要: BusyBox 项目是由Bruce Perens in 在1996创建的http://www.busybox.net/BusyBox 是在 GNU GPL 许可协议下发行的开源软件享有“嵌入式Linux的瑞士军刀”美誉,Erik Andersen先生维护;Busybox是一个UNIX系统工具集,它将 阅读全文
posted @ 2022-12-25 18:30 cnetsa 阅读(233) 评论(0) 推荐(0)
摘要: 采用Busybox创建基本命令创建基本的目录 /lib /etc /var /tmp /dev /sys /proc等添加glibc基本动态库创建基本的设备节点添加启动配置和脚本程序 /etc/inittab /etc/fstab /etc/init.d/rcS测试根文件系统制作根文件系统镜像 阅读全文
posted @ 2022-12-25 18:24 cnetsa 阅读(45) 评论(0) 推荐(0)
摘要: 使用不同的文件目录层次结构?FHS(文件系统层次化标准)规定了制定根文件系统的规则 通常大多少应用程序和发布依赖这些规则,但这些规则不是内核强制的在嵌入式Linux系统中,你可以构建一个完全不同的根目录层次结构 相应的AP配置需要适当调整建议遵循FHS来构建根文件系统 文件系统层次化标准 Files 阅读全文
posted @ 2022-12-25 17:45 cnetsa 阅读(42) 评论(0) 推荐(0)
摘要: 创建设备节点创建设备文件的一般语法: $ mknod /dev/<device> [c|b] <major> <minor>例如: $ mknod /dev/ttySAC0 c 4 64 $ mknod /dev/hda1 b 3 1 基本设备节点(见下表) 阅读全文
posted @ 2022-12-25 17:43 cnetsa 阅读(26) 评论(0) 推荐(0)
摘要: 设备的主设备号次设备号Linux系统是通过主设备号和次设备号来区分设备的主设备号: (major) 内核用来区分哪类设备次设备号: (minor) 区分某类设备中的哪个设备内核中的相关文档 Documentation/devices.txt 阅读全文
posted @ 2022-12-25 17:41 cnetsa 阅读(68) 评论(0) 推荐(0)
摘要: “b” 指明该设备节点是块设备 (ls -l)brw-rw 1 root disk 3, 1 Feb 23 2004 hda1brw-rw 1 jdoe floppy 2, 0 Feb 23 2004 fd0brw-rw 1 root disk 7, 0 Feb 23 2004 loop0brw-r 阅读全文
posted @ 2022-12-25 17:39 cnetsa 阅读(37) 评论(0) 推荐(0)
摘要: 典型设备keyboards, mice, parallel port, IrDA, Bluetooth port, consoles, terminals, sound, video... 阅读全文
posted @ 2022-12-25 17:38 cnetsa 阅读(24) 评论(0) 推荐(0)
摘要: 字符设备ls –l /dev/ “c” 指明该设备节点是字符设备crw-rw 1 root uucp 4, 64 Feb 23 2004 /dev/ttyS0crw--w 1 jdoe tty 136, 1 Feb 23 2004 /dev/pts/1crw 1 root root 13, 32 F 阅读全文
posted @ 2022-12-25 17:37 cnetsa 阅读(23) 评论(0) 推荐(0)
摘要: Linux 系统中所有的对象(包括设备)都是以文件的形式体现的 Linux系统中,所有的设备文件(如:设备节点),通常放到 /dev下 嵌入式系统中只需要创建必须的设备节点即可 阅读全文
posted @ 2022-12-25 17:36 cnetsa 阅读(129) 评论(0) 推荐(0)
摘要: 库文件目录 /lib: 系统和运行基本命令时需要的动态库文件 /usr/lib:所有的其他库 /usr/lib/xxx: 一些工具包的私有库 如:/usr/lib/perl5 阅读全文
posted @ 2022-12-25 17:36 cnetsa 阅读(30) 评论(0) 推荐(0)
摘要: 配置用户自己的应用 桌面管理器等等 阅读全文
posted @ 2022-12-25 17:35 cnetsa 阅读(20) 评论(0) 推荐(0)
摘要: 配置基本的linux命令(嵌入式linux通过busybox制作) cat, chmod, chown, cp, chroot, copi, date, dd, df, dmesg, dos2unix, du, echo, env, expr, find, grep, gunzip, gzip, h 阅读全文
posted @ 2022-12-25 17:34 cnetsa 阅读(65) 评论(0) 推荐(0)
摘要: /usr/sbin: 更多非必须的root工具程序 automount, httpd, in.telnetd, in.talkd, sendmail 阅读全文
posted @ 2022-12-25 17:33 cnetsa 阅读(19) 评论(0) 推荐(0)
摘要: /usr/bin: 更多非必须的用户程序 autorun, bibtex, latex, biff, ftp, wc, whereis, whoami 阅读全文
posted @ 2022-12-25 17:33 cnetsa 阅读(45) 评论(0) 推荐(0)
摘要: /sbin: root用户能执行的基本程序 int, insmod, route, mkfs, rmmod, ifconfig 阅读全文
posted @ 2022-12-25 17:32 cnetsa 阅读(27) 评论(0) 推荐(0)
摘要: /bin: 普通用户和root用户都能执行的基本程序 ping, mknod, mount, tar, grep, gzip, etc 阅读全文
posted @ 2022-12-25 17:31 cnetsa 阅读(289) 评论(0) 推荐(0)
摘要: 嵌入式系统简介嵌入式系统组成嵌入式Linux系统介绍嵌入式系统开发方式系统移植的主要任务搭建开发环境U-Boot命令的使用ARM交叉编译工具链 阅读全文
posted @ 2022-12-25 15:27 cnetsa 阅读(26) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-12-25 15:24 cnetsa 阅读(21) 评论(0) 推荐(0)
摘要: 3.5.3.1 哈希表的概念及作用 3.5.3.2 哈希表的构造方法 3.5.3.3 哈希表的处理冲突方法 3.5.3.4 ARM Linux中哈希表使用实例 阅读全文
posted @ 2022-12-25 15:17 cnetsa 阅读(44) 评论(0) 推荐(0)
摘要: 平衡树包括很多种类,常见的有B树、AVL树、红黑树等。 这些树都大致平衡,能保证最坏情况下为O(logN)的性能,因此广受大家的欢迎。 但是由于平衡机制的不同,这些树都有着不同的应用场景和不同的统计性能,其中B树主要用于文件系统、数据库等方面,而AVL树和红黑树多用于检索领域。 由于红黑树在平衡机制 阅读全文
posted @ 2022-12-25 14:48 cnetsa 阅读(242) 评论(0) 推荐(0)
摘要: 二叉树的定义 二叉树是一种有序树,它是节点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。 它的特点是每个节点至多只有两棵子树(即二叉树中不存在度大于2的节点),并且,二叉树的子树有左右之分,其次序不能任意颠倒。 二叉树的定义 (1)满二叉树 阅读全文
posted @ 2022-12-25 14:37 cnetsa 阅读(155) 评论(0) 推荐(0)
摘要: 树是由 n (n >= 0) 个结点组成的有限集合。如果 n = 0,称为空树;如果 n > 0,则 有一个特定的称之为根的结点,它只有直接后继,但没有直接前驱; 除根以外的其它结点划分为 m (m >= 0) 个 互不相交的有限集合T0, T1, …, Tm-1,每个集合又是一棵树,并且称之为根的 阅读全文
posted @ 2022-12-25 14:31 cnetsa 阅读(201) 评论(0) 推荐(0)
摘要: 4.2.1 树的定义 4.2.2 二叉树 4.2.3 平衡树 4.2.4 ARM Linux中红黑树使用实例 阅读全文
posted @ 2022-12-25 14:28 cnetsa 阅读(32) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-12-25 14:17 cnetsa 阅读(33) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-12-25 14:16 cnetsa 阅读(17) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-12-25 14:15 cnetsa 阅读(40) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-12-25 14:15 cnetsa 阅读(27) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-12-25 14:13 cnetsa 阅读(11) 评论(0) 推荐(0)
摘要: 3.5.1 链表 3.5.2 树、二叉树、平衡树 3.5.3 哈希表 阅读全文
posted @ 2022-12-25 14:12 cnetsa 阅读(31) 评论(0) 推荐(0)
摘要: memory描述符告知gcc以下内容。 不要将该段内嵌汇编指令与前面的指令重新排序。 不要将变量缓存到寄存器。 如果汇编指令修改了内存,但是gcc本身却察觉不到,因为在输出部分没有描述,此时就需要在修改描述部分增加memory,告诉gcc内存已经被修改,gcc得知这个信息后,就会在这段指令之前,插入 阅读全文
posted @ 2022-12-25 14:12 cnetsa 阅读(99) 评论(0) 推荐(0)
摘要: C语言关键字volatile表明某个变量的值可能随时被外部改变,因此对这些变量的存取不能缓存到寄存器,每次使用时需要重新读取。 volatile的本意是指这个值可能会在当前线程外部被改变,此时编译器知道该变量的值会在外部改变,因此每次访问该变量时会重新读取。 这个关键字在外设接口编程中经常会使用。 阅读全文
posted @ 2022-12-25 13:59 cnetsa 阅读(204) 评论(0) 推荐(0)
摘要: 由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度,以上是硬件级别的优化。 软件级别的优化有两种:一种是在编写代 阅读全文
posted @ 2022-12-25 13:58 cnetsa 阅读(223) 评论(0) 推荐(0)
摘要: 汇编语言模板汇编语句模板由汇编语句序列组成,语句之间使用“;”、“\n”或“\n\t”分开。 每条指令都必须被双引号括起来。两条指令必须用换行或分号分开。 指令中的操作数可以使用占位符引用C语言变量,操作数占位符最多10个,名称如为:%0,%1,...,%9 输出部分输出部分用来指定当前内联汇编语句 阅读全文
posted @ 2022-12-25 13:57 cnetsa 阅读(137) 评论(0) 推荐(0)
摘要: 字节顺序是指一个字中各个字节的顺序,有大端模式和小端模式。 大端模式是指在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。小端模式是指与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。ARM体系结构支持大端模式(big-e 阅读全文
posted @ 2022-12-25 13:55 cnetsa 阅读(177) 评论(0) 推荐(0)
摘要: 对齐是内存数据与内存中的相对位置相关的话题。一些体系结构对对齐的要求非常严格。通常基于RISC的系统载入未对齐的数据会导致处理器陷入(一种可处理的错误);还有一些系统可以访问没有对齐的数据,但性能会下降。 阅读全文
posted @ 2022-12-25 13:54 cnetsa 阅读(56) 评论(0) 推荐(0)
摘要: 能够由机器一次完成处理的数据称为字,不同体系结构的字长通常会有所区别。 阅读全文
posted @ 2022-12-25 13:53 cnetsa 阅读(21) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-12-25 13:51 cnetsa 阅读(27) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-12-25 13:51 cnetsa 阅读(13) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-12-25 13:50 cnetsa 阅读(25) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2022-12-25 13:50 cnetsa 阅读(42) 评论(0) 推荐(0)
摘要: 有一些预处理定义的符号串,它们的值或者是字符串常量,或者是十进制数字常量,它们通常在调试程序时用于输出源程序的各项信息 。 ——FILE —— ——LINE —— ——FUNCTION—— ——DATE—— ——TIME—— ——STDC—— 阅读全文
posted @ 2022-12-25 13:44 cnetsa 阅读(135) 评论(0) 推荐(0)
摘要: 在嵌入式系统开发中,我们经常通过使用交叉调试工具实现远程调试。 采用远程调试的主要原因是大多数嵌入式平台不太适合进行本地调试,在很多嵌入式平台上内存等资源受限制,并且附带调试信息的可执行程序往往超过几兆字节大小。使用交叉调试,可以减轻嵌入式平台的这些负担。 gdb调试器提供了两种不同的远程调试方法, 阅读全文
posted @ 2022-12-25 13:43 cnetsa 阅读(900) 评论(0) 推荐(0)
摘要: 进入GDB ——gdb test 查看文件——l 设置断点 ——b 6 查看断点处情况 ——info b 运行代码 ——r 查看变量值 ——p n / p i 单步运行 ——n 恢复程序运行 ——c 观察变量 ——watch n 退出GDB ——q 阅读全文
posted @ 2022-12-25 13:40 cnetsa 阅读(70) 评论(0) 推荐(0)
摘要: 申请方式 栈 (stack)是由系统自动分配的。例如,声明函数中一个局部变量“int b;”,那么系统自动在栈中为b开辟空间。 堆(heap)需要程序员自己申请,并在申请时指定大小。使用C语言中的malloc函数的例子如下所示。 p1 = (char *)malloc(10); 申请后系统的响应 只 阅读全文
posted @ 2022-12-25 13:22 cnetsa 阅读(51) 评论(0) 推荐(0)
摘要: malloc/free 野指针: 不是NULL指针,是指向“垃圾”内存的指针。“野指针”是很危险的。 出现“野指针”主要有以下原因: 指针变量没有被初始化。 指针p被free或者delete之后,没有置为NULL,让人误以为p是个合法的指针。 指针操作超越了变量的作用范围。这种情况让人防不胜防。 阅读全文
posted @ 2022-12-25 13:20 cnetsa 阅读(68) 评论(0) 推荐(0)
摘要: malloc/free void * malloc(size_t num) void free(void *p) malloc函数只关心申请的内存的大小。 malloc申请到的是一块连续的内存,有时可能会比所申请的空间大。其有时会申请不到内存,返回NULL。 malloc返回值的类型是void *, 阅读全文
posted @ 2022-12-25 13:16 cnetsa 阅读(30) 评论(0) 推荐(0)
摘要: 当程序运行到需要一个动态分配的变量或对象时,必须向系统申请取得堆中的一块所需大小的存贮空间,用于存贮该变量或对象。 当不再使用该变量或对象时,也就是它的生命结束时,要显式释放它所占用的存贮空间,这样系统就能对该堆空间进行再次分配,做到重复使用有限的资源。 堆区是不会自动在分配时做初始化的(包括清零) 阅读全文
posted @ 2022-12-25 13:14 cnetsa 阅读(198) 评论(0) 推荐(0)
摘要: 动态存储分配 有些操作对象只有在程序运行时才能确定,这样编译器在编译时就无法为他们预先分配空间,只能在程序运行时分配。 所有动态存储分配都在堆区中进行。 程序在运行的时候用malloc或new申请任意大小的内存。 程序员自己负责在何时用free或delete释放内存。 动态内存的生存期由我们决定,使 阅读全文
posted @ 2022-12-25 13:13 cnetsa 阅读(48) 评论(0) 推荐(0)
摘要: 通常定义变量,编译器在编译时都可以根据该变量的类型知道所需内存空间的大小,从而系统在适当的时候为他们分配确定的存储空间。 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。 栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限 阅读全文
posted @ 2022-12-25 13:12 cnetsa 阅读(39) 评论(0) 推荐(0)
摘要: 代码区/全局变量与静态变量区/局部变量区即栈区/动态存储区,即堆区。 阅读全文
posted @ 2022-12-25 13:11 cnetsa 阅读(18) 评论(0) 推荐(0)
摘要: C语言extern用法_哔哩哔哩_bilibili 阅读全文
posted @ 2022-12-25 11:35 cnetsa 阅读(26) 评论(0) 推荐(0)
摘要: C语言static变量 结果: C语言经典例子之static定义静态变量的用法_哔哩哔哩_bilibili 阅读全文
posted @ 2022-12-25 11:29 cnetsa 阅读(22) 评论(0) 推荐(0)
摘要: 【C语言】学习使用register定义变量的方法。_哔哩哔哩_bilibili 输出10 阅读全文
posted @ 2022-12-25 11:28 cnetsa 阅读(41) 评论(0) 推荐(0)
摘要: auto变量_哔哩哔哩_bilibili 阅读全文
posted @ 2022-12-25 11:22 cnetsa 阅读(40) 评论(0) 推荐(0)
摘要: eclipse 交叉编译 整理中 阅读全文
posted @ 2022-12-25 11:07 cnetsa 阅读(13) 评论(0) 推荐(0)
摘要: -c dir 读入指定目录下的makefile -f file 读入当前目录下的file文件作为makefile -i 忽略所有的命令执行错误 -I dir 指定被包含的makefile所在目录 -n 只打印要执行的命令,但不执行这些命令 -p 显示make变量数据库和隐含规则 -s 不显示命令 - 阅读全文
posted @ 2022-12-25 11:05 cnetsa 阅读(57) 评论(0) 推荐(0)
摘要: makefile的规则是make进行处理的依据,它包括了目标体、依赖文件及其之间的命令语句。 普通规则 隐含规则 模式规则 阅读全文
posted @ 2022-12-25 10:54 cnetsa 阅读(28) 评论(0) 推荐(0)
摘要: $* 不包含扩展名的目标文件名称 $+ 所有的依赖,以空格分开,并以出现的先后顺序,可能包含重复的依赖文件 $< 第一个依赖文件的名称 $? 所有时间戳比目标文件晚的依赖,并以空格分开 $@ 目标文件的完整名称 $^ 所有不重复的依赖文件,以空格分开 $% 如果目标是归档成员,则该变量表示目标的归档 阅读全文
posted @ 2022-12-25 10:54 cnetsa 阅读(373) 评论(0) 推荐(0)
摘要: AR 库文件维护程序的名称,默认值为ar。 AS CC Cpp Cxx FC RMarflags ASflags Cflags CPPFlags CXXflags FFlags 例如: #预定义变量的使用 阅读全文
posted @ 2022-12-25 10:47 cnetsa 阅读(50) 评论(0) 推荐(0)
摘要: 变量种类 用户自定义变量 预定义变量 自动变量 环境变量 OBJS = kang.o yul.o CC = gccCFLAGS = -Wall -O -gdavid : $(OBJS) $(CC) $^ -o $@kang.o : kang.c kang.h $(CC) $(CFLAGS) -c $ 阅读全文
posted @ 2022-12-25 10:38 cnetsa 阅读(41) 评论(0) 推荐(0)
摘要: 用来代替一个文本字符串 变量定义的两种方式 递归展开方式VAR=var 简单方式 VAR:=var 变量使用$(VAR) OBJS = kang.o yul.o CC = gcc CFLAGS = -Wall -O -g david : $(OBJS) $(CC) $(OBJS) -o david 阅读全文
posted @ 2022-12-25 10:32 cnetsa 阅读(34) 评论(0) 推荐(0)
摘要: 工程管理器,顾名思义,是指管理较多的文件 Make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能构根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件文件的内容来执行大量的编译工作 makefile是make读入的惟一配置文件,因此本节的内容实际就 阅读全文
posted @ 2022-12-25 10:21 cnetsa 阅读(93) 评论(0) 推荐(0)
摘要: gdb中查看运行数据的相关命令 print 表达式|变量 x《n/f/u》 display 表达式 backtrace 查看当前栈的情况 阅读全文
posted @ 2022-12-25 10:16 cnetsa 阅读(44) 评论(0) 推荐(0)
摘要: list 【行号】或函数名 file 【文件名】 forward-search 正则表达式 reverse-search 正则表达式 dir dir 停止路径名 show directories info line 阅读全文
posted @ 2022-12-25 10:14 cnetsa 阅读(65) 评论(0) 推荐(0)
摘要: INF B break [文件名:] 行号 或函数名 《条件表达式> 设置断点 tbreak [文件名:] 行号 或函数名 《条件表达式> 设置临时断点 delete 【断点号】 disable【断点号】 enable 【断点号】 condition【断点号】《条件表达式> ignore 【断点号】 阅读全文
posted @ 2022-12-25 10:11 cnetsa 阅读(62) 评论(0) 推荐(0)
摘要: set args show args path dir show paths set environment var =[value] show environment [var] cd dir pwd shell command 阅读全文
posted @ 2022-12-25 10:05 cnetsa 阅读(137) 评论(0) 推荐(0)
摘要: gcc可以对代码进行优化,它通过编译选项“-On”来控制优化代码的生成,其中n是一个代表优化级别的整数。 阅读全文
posted @ 2022-12-25 10:02 cnetsa 阅读(78) 评论(0) 推荐(0)
摘要: gcc –Wall warning.c –o warning warning.c:4 警告:“main”的返回类型不是“int” warning.c: 在函数“main”中: warning.c:7 警告:在无返回值的函数中,“return”带返回值 warning.c:5 警告:未使用的变量“tm 阅读全文
posted @ 2022-12-25 09:56 cnetsa 阅读(38) 评论(0) 推荐(0)
摘要: gcc –pedantic warning.c –o warning warning.c: 在函数“main”中: warning.c:5 警告:ISO C90不支持“long long” warning.c:7 警告:在无返回值的函数中,“return”带返回值 warning.c:4 警告:“m 阅读全文
posted @ 2022-12-25 09:55 cnetsa 阅读(44) 评论(0) 推荐(0)
摘要: gcc –ansi warning.c –o warning warning.c: 在函数“main”中: warning.c:7 警告:在无返回值的函数中,“return”带返回值 warning.c:4 警告:“main”的返回类型不是“int” 阅读全文
posted @ 2022-12-25 09:53 cnetsa 阅读(35) 评论(0) 推荐(0)