- 博客(50)
- 收藏
- 关注
原创 chromium编译避坑日记
修改${SRC}\third_party\llvm-build\clang.gni文件中default_clang_base_path = "//third_party/llvm-build/LLVM"* 拷贝安装好的LLVM到${SRC}\third_party\llvm-build\LLVM。* 原因:该版本的chromium代码自带的clang版本为14,编译环境要求clang 16+* chromiu版本:99.0.4844.94。* 有其他的方法还请告知。* 编译器:LLVM 17.0.6。
2023-12-02 10:56:58 1079
转载 Ubuntu Linux下通过代理(proxy)使用git上github.com
配制过程分为以下几步:1. 安装socat,在ubuntu下使用以下命令安装[html] view plaincopyprint?sudo apt-get install socat sudo apt-get install socat2. 编辑一个脚本文件,名字为git-proxy ,内容如下[ht
2018-01-08 10:49:35 2333
转载 Linux 0.12 内核对内存的管理
其着重点在于分段,用分段的机制把进程间的虚拟地址分隔开。每个进程都有一张段表LDT,整个系统有一张GDT表,且整个系统只有一个总页表。 其地址翻译过程为:程序中给出的32位地址(实际上被看做段内偏移地址),再根据代码段寄存器CS中的16位段选择子,可在GDT或LDT中查找相应的段描述符。从段描述符中提取段的基地址,与程序给出的32位地址相加,得到
2015-03-03 16:50:19 857
转载 Linux 2.x 内核对内存的管理
其着重点在于分页,用分页的机制把进程间的虚拟地址分隔开来。每个进程都有一套页表,整个系统有一张GDT表(此机制由逻辑地址到线性地址变换,实际上是走了个形式,变换前后地址不变)每个进程都有一套页表用于从线性地址到物理地址的映射变换。这样,每个进程都有一个4GB的逻辑空间。(两进程的逻辑地址相同,但它们有不同的页表,故最终会映射到不同的物理位置)实际上,此机制的地址翻译
2015-03-03 16:45:18 559
转载 操作系统内存管理
物理内存Linux为了有效使用机器中的物理内存,在系统初始化阶段内存被划分成几个功能区域:其中,Linux内核程序占据在物理内存的开始部分,接下来是供硬盘等块设备使用的高速缓冲区部分(其中要扣除显卡内存和ROM BIOS所占用的内存地址范围)当一个进程需要读取块设备中的数据时,系统会首先把数据读到高速缓冲区中。当有数据需要写到块设备上去时,系统也是先将数据放到高
2015-03-03 16:44:03 592
转载 操作系统对内存的管理
简介 内存是计算机中最重要的资源之一,通常情况下,物理内存无法容纳下所有的进程。虽然物理内存的增长现在达到了N个GB,但比物理内存增长还快的是程序,所以无论物理内存如何增长,都赶不上程序增长的速度,所以操作系统如何有效的管理内存便显得尤为重要。本文讲述操作系统对于内存的管理的过去和现在,以及一些页替换的算法的介绍。对于进程的简单介绍 在开始之前,首先从操作系统的角度简单介绍
2015-03-03 16:24:58 561
转载 cmake与autoconf+automake的对比
首先,拿他们对比本身没有太多的意义,他们都是产生makefile文件的工具。cmake产生的晚,解决了很多autotools工具的问题。autotools是一个工具集具有强大的灵活性,但是因为步骤太多,配置繁琐,产生了很多的替代方案,cmake是其中最优秀的之一。当然很多其他替代品不会产生makefile文件而直接具有make的功能了。看到下图,你是不是感觉有些发晕。不过还好,
2015-03-03 14:37:09 838
转载 Linux ELF文件学习
ELF头文件学习ELF文件原名Executable and Linking Format,译为“可执行可连接格式”。ELF规范中把ELF文件宽泛的称为“目标文件”,这与我们平时的理解不同。一般的,我们把编译但没有链接的文件(比如Linux下的.o文件)称为目标文件。而ELF文件仅指链接好的可执行文件。在ELF规范中,所用符合ELF规范的文件都成为ELF文件,也成为目标文件,这两个名字意义相
2015-02-09 16:23:20 477
转载 ld中文使用手册完全版
'ld'把一定量的目标文件跟档案文件连接起来,并重定位它们的数据,连接符号引用.一般,在编译一个程序时,最后一步就是运行'ld'.'ld'能接受连接命令语言文件,这是一种用AT&T的连接编辑命令语言的超集写成的文件,用来在连接的整个过程中提供显式的,全局的控制.使用ld********本文档介绍GNU连接器ld的2.14版本.本文档在GNU自由文档许可证下发行.在"GNU自由文档许
2015-01-13 16:11:53 2767
转载 ld文件
OUTPUT_FORMAT("elf32-tradlittlemips")OUTPUT_ARCH(mips)ENTRY(_start)SECTIONS{ . = 0x80100000; .text: { _ftext = . ; *(.text) *(.rodata) *(.rodata1)
2015-01-13 14:42:26 1411
转载 禁用 baloo_file_extractor 加速 ubuntu 14.04 (KDE)
在复制了一堆零散文件后,系统同然变得奇卡,看看cpu和ram都占用不高,但看到这个进程 baloo_file_extractor 时不时地冒一下泡,怀疑是它在频繁访问硬盘。禁止它自动启动的方式:$ cp /usr/share/autostart/baloo_file.desktop ~/.kde/share/autostart/ $ echo "Hidden=True" >> ~/.kd
2015-01-12 14:16:40 2253
转载 Terminator
简介在linux下编程怎能缺少一个功能强大的终端,这里向大家介绍一款广受好评的终端——Terminator(终结者).Terminator 是CrunchBang的默认终端,该终端基于 GNOME terminal。Terminator最大的特点就是可以在一个窗口中打开多个终端,可以自由的将一个终端区域横向或纵向分割建立新终端,通过鼠标拉伸调整每个终端的大小,对需要同时使用多个终端的用户非
2015-01-10 20:01:05 1676
转载 ARM汇编指令
ARM汇编指令ARM处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令6大指令。一、跳转指令 跳转指令用于实现程序流程的跳转,在ARM程序中有以下两种方法可以实现程序流程的跳转。Ⅰ.使用专门的跳转指令;Ⅱ.直接向程序计数器PC写入跳转地址值,通过向程序计数器PC写入跳转地址值,可以实现在4GB的地
2015-01-09 09:23:26 609
转载 返回连接寄存器【LR】详解
异常的发生会导致程序正常运行的被打断, 并将控制流转移到相应的异常处理(异常响应),有些异常(fiq、irq)事件处理后,系统还希望能回 到当初异常发生时被打断的源程序断点处继续完成源程序的执行(异常返回),这就需要一种解决方案, 用于记录源程序的断点位置,以便正确的异常返回。 类似的还有子程序的调用和 返回。在主程序中(通过子程序调用指令)调用子程序时,也需要记录下主程序中的调用点位置
2015-01-08 09:45:29 2568
转载 __attribute__ 知多少
GNU C 的一大特色就是__attribute__ 机制。__attribute__ 可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute )。__attribute__ 书写特征是:__attribute__ 前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__attribu
2015-01-07 15:44:19 513
转载 GCC在C语言中内嵌汇编 asm __volatile__
在内嵌汇编中,可以将C语言表达式指定为汇编指令的操作数,而且不用去管如何将C语言表达式的值读入哪个寄存器,以及如何将计算结果写回C 变量,你只要告诉程序中C语言表达式与汇编指令操作数之间的对应关系即可, GCC会自动插入代码完成必要的操作。一、简单的内嵌汇编例: __asm__ __volatile__("hlt"); "__asm__"表示后面的代码为内嵌汇编,"asm"是"_
2015-01-07 13:52:15 887
转载 linux下的eclipse修改project explorer字体
普通的字体修改:Preferences -> General -> Appearance -> Colors and Fonts但是Project Explorer的修改就没这么简单了,以下是好容易找到的一个方法:编辑~/.gtkrc-2.0,写入如下内容:style "eclipse" {font_name = "Arial 8" bg[NORMAL] = "#D6
2015-01-05 16:09:57 956
转载 段式存储管理
一、基本原理 前面介绍的各种存储管理中,供用户使用的逻辑地址都是连续的,用户在编制大型程序时就会感到不方便。一个实际的程序往往是由若干段组成的,例如一个主程序段、若干子程序段、若干数据段和工作区段组成,如图3.22所示。每个段都具有完整的逻辑意义,因此都可以独立编程,且给每个段一个段名。用户程序可以用符号形式(段名和入口)调用一个段的功能,如图3.21主程序中“调用[X]段入口E”。
2014-12-10 10:10:57 13611
转载 内存管理单元(MMU)介绍
MMU是存储器管理单元的缩写,是用来管理虚拟内存系统的器件。MMU通常是CPU的一部分,本身有少量存储空间存放从虚拟地址到物理地址的匹配表。此表称作TLB(转换旁置缓冲区)。所有数据请求都送往MMU,由MMU决定数据是在RAM内还是在大容量存储器设备内。如果数据不在存储空间内,MMU将产生页面错误中断。MMU的两个主要功能是:1. 将虚地址转换成物理地址。 2. 控制存储器存取允许。M
2014-12-08 17:10:43 1367
转载 L4操作系统(L4/Fiasco)
L4操作系统(L4/Fiasco介绍) 我们学习操作系统课程的时候,一直在讲微内核,说什么“微内核是现代操作系统的主流”(时间太久,记不清了,如果说错了,不要拍我)。可是事实上,真正进入工业级别应用的微内核操作系统并不多,Microsoft的系统虽然宣称是微内核,但是应该不是,因为从来没有见过一个人可以把XP或者2000系统裁减到50M以内(95/98可以做小,这个可以从网络搜索到相关资料,
2014-11-26 13:47:16 3621
转载 openssl之BIO系列之16---BIO对(pair)类型BIO
前面我们已经介绍过BIO对的概念,其实更进一步,BIO对也是作为一种source/sink类型的BIO来处理的,也就是说,BIO里面还提供了一种专门的BIO_METHO方法来处理BIO对的各种操作。BIO对类型的BIO各种相关的函数定义如下(openssl/bio.h): BIO_METHOD *BIO_s_bio(void); #define BIO_make
2014-10-22 13:28:39 716
转载 openssl之BIO系列之17---连接(connect)类型BIO
该类型的BIO封装了socket的Connect方法,它使得编程的时候可以使用统一的BIO规则进行socket的connect连接的操作和数据的发送接受,而不用关心具体平台的Socket的connect方法的区别。其相关定义的一些函数如下(openssl/bio.h): BIO_METHOD * BIO_s_connect(void); #define BIO_set_co
2014-10-22 13:27:32 1394
转载 openssl之BIO系列之14---源类型的NULL型BIO
这是一个空的source/sink型BIO,写到这个BIO的数据都被丢掉了,从这里执行读操作也总是返回EOF。该BIO非常简单,其相关函数的定义如下(openssl/bio.h): BIO_METHOD * BIO_s_null(void); 其相关的源文件实现函数在bss_null.c里面。 【BIO_s_null】 该函数返回一个NULL型的BIO_M
2014-10-22 13:23:04 473
转载 openssl之BIO系列之15---内存(mem)类型BIO
内存(mem)类型BIO所定义的相关系列函数如下(openssl/bio.h): BIO_METHOD * BIO_s_mem(void); BIO_set_mem_eof_return(BIO *b,int v) long BIO_get_mem_data(BIO *b, char **pp) BIO_set_mem_buf(BIO *
2014-10-22 13:20:35 3319
转载 openssl之BIO系列之13---Socket类型BIO
Socket类型的BIO也是一种source/sink型BIO,封装了Socket的IO操作,它相关的一些函数定义如下(openssl/bio.h): BIO_METHOD * BIO_s_socket(void); #define BIO_set_fd(b,fd,c) BIO_int_ctrl(b,BIO_C_SET_FD,c,fd) #define BIO_
2014-10-22 11:58:39 835
转载 openssl之BIO系列之12---文件描述符(fd)类型BIO
文件描述符类型BIO也是一个source/sink型的BIO,它定义了以下一些类型的函数(openssl/bio.h): BIO_METHOD * BIO_s_fd(void); #define BIO_set_fd(b,fd,c) BIO_int_ctrl(b,BIO_C_SET_FD,c,fd) #define BIO_get_fd(b,c) BIO_ctr
2014-10-22 11:53:40 755
转载 openssl之BIO系列之11---文件(file)类型BIO
前面我们已经介绍了很多BIO的基本构造和操作,现在,我们开始针对每一个类型BIO进行进一步的介绍,这些介绍都是基本基于openssl的帮助文档的,我尽可能加入自己的一些理解,理清思路。在开始这部分之前,我一直在想该从哪一种类型的BIO开始比较合适,因为这些BIO类型之间有些还是有相互联系的,比如BIO_s_bio型就和BIO_f_ssl有关系,最后,考虑到大家对文件操作都比较熟悉,而且该类型BIO
2014-10-22 10:32:10 2911 1
转载 openssl之BIO系列之10---BIO链的定位操作
前面的一篇文章讲过BIO链的构造方法,这里讲的是在一个BIO链中,怎么查找一个特定的BIO,怎么遍历BIO链中的每一个BIO,这组函数定义如下(openssl/bio.h): BIO * BIO_find_type(BIO *b,int bio_type); BIO * BIO_next(BIO *b); #define BIO_method_typ
2014-10-22 10:27:43 441
转载 openssl之BIO系列之9---BIO对的创建和应用
BIO对是BIO中专门创建的一对缓存BIO,要创建BIO对,调用下面定义的函数(openssl/bio.h): int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, BIO **bio2, size_t writebuf2); 这个函数调用成功后返回1,这时候bio1和bio2都是有效的了;否则就返回0,而bio1和bio2就会设
2014-10-22 10:25:09 532
转载 openssl之BIO系列之8---读写出错控制
当BIO_read或BIO_write函数调用出错的时候,BIO本身提供了一组出错原因的诊断函数,他们定义如下(openssl/bio.h): #define BIO_should_read(a) ((a)->flags & BIO_FLAGS_READ) #define BIO_should_write(a) ((a)->flags & BIO_FLAGS_WRITE)
2014-10-22 10:22:27 1670
转载 openssl之BIO系列之6---BIO的IO操作函数
这些函数是BIO的基本读写操作函数,包括四个,他们的定义如下(openssl/bio.h): int BIO_read(BIO *b, void *buf, int len); int BIO_gets(BIO *b,char *buf, int size); int BIO_write(BIO *b, const void *buf, int len);
2014-10-22 10:17:56 895
转载 openssl之BIO系列之7---BIO链的操作
我在介绍BIO结构的时候说过,BIO结构其实是一个链式结构,单个BIO是只有一个环节的BIO链的特例,那么我们怎么构造或在一个BIO链中增加一个BIO,怎么从一个BIO链中删除一个BIO呢,那么本节就是专门讲述这个问题的。 其实,在openssl中,针对BIO链的操作还是很简单的,仅仅包括两个函数(openssl/bio.h): BIO * BIO_push(BIO *b,B
2014-10-22 10:15:38 580
转载 openssl之BIO系列之4---BIO控制函数介绍
BIO控制函数介绍 BIO控制函数有许多,并且不同的BIO类型还有不同的控制函数,这里只简单介绍一些通用的BIO控制函数,至于某种类型BIO的特定控制函数,则参考后续的文件。 BIO的通用控制函数有以下几种,其声明如下(openssl/bio.h): long BIO_ctrl(BIO *bp,int cmd,long larg,void *parg);
2014-10-22 10:14:43 1071
转载 openssl之BIO系列之5---CallBack函数及其控制
CallBack函数及其控制 通过前面的介绍大家已经知道,BIO的callback函数是非常重要的,是实现BIO多态性的一个关键因素之一,BIO提供的callback控制系列函数有五个,其实都是一些宏定义,下面是它的声明和定义(openssl/bio.h): #define BIO_set_callback(b,cb) ((b)->callback=(cb))
2014-10-22 10:12:17 613
转载 openssl之BIO系列之3---BIO的声明和释放等基本操作
BIO的声明和释放等基本操作 ---根据openssl doc/crypto/bio/bio_new.pod翻译和自己的理解写成 (作者:DragonKing Mail:wzhah@263.net 发布于:gdwzh.126.com openssl专业论坛) 在BIO的基本操作系列函数中,他们用来BIO分配和释放操作,包括: BIO_
2014-10-22 10:08:56 1165
转载 openssl之BIO系列之2---BIO结构和BIO相关文件介绍
BIO结构和BIO相关文件介绍 (作者:DragonKing Mail:wzhah@263.net 发布于:http://gdwzh.126.com openssl专业论坛) BIO的结构定义和相关项解析如下: (包含在bio.h文件中,其主文件为bio_lib.c) typedef struct bio_st BIO; s
2014-10-22 10:08:49 878
转载 openssl之BIO系列之1---抽象的IO接口
BIO-抽象的IO接口 (作者:DragonKing Mail:wzhah@263.net 发布于:http://gdwzh.126.com openssl专业论坛) 其实包含了很多种接口,用通用的函数接口,主要控制在BIO_METHOD中的不通实现函数控制, 我初步估计了一下,大概有14种,包括6种filter型和8种source
2014-10-22 10:04:56 779
转载 OpenSSL API编程
相关代码:server端:#include "stdafx.h"#include winsock2.h> #include conio.h> #include stdio.h> #include "openssl/x509.h" #include "openssl/ssl.h" #include "openssl/err.h"
2014-10-20 17:05:23 841
转载 OpenSSL握手协议分析
一、 SSL握手协议(SSL Handshake Protocal)SSL握手协议的作用是在正式的秘密通信之前,让服务器和客户之间互相鉴别对方的身份并协商一种会话的加密算法和加密密钥,主要分为两个方面:1)客户端和服务器之间互相验证身份C/S主要是通过证书来验证对方的合法性。合法性包括:证书是否过期、发行服务器证书的CA是否可靠、发行者证书的公钥能否正确解开服务器证
2014-10-20 17:02:28 1689
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人