![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 72
bobbypapa
这个作者很懒,什么都没留下…
展开
-
安装ubuntu(16.04)后要做的事
1, gnome-tweak-tool窗口最大化按钮2,右键打开终端sudo apt-get install nautilus-open-terminal3,安装jdksudo add-apt-repository ppa:webupd8team/javasudo apt-get updatesudo apt-get install oracle-java8-installer4,安装g++5,安...原创 2018-04-10 22:03:45 · 623 阅读 · 0 评论 -
MIPS backtrace的实现方案
概述backtrace获取的是当前函数的纵向调用信息。一般思路是,给定当前函数的栈地址和当前运行位置(PC),通过计算得到当前函数的返回地址和上层函数(caller)的栈地址,然后以当前函数的返回地址作为caller的PC,来继续解析caller的返回地址和caller of caller的栈地址,以此类推进行纵向解析。不管什么处理器架构,其GCC工具链提供的libgcc库中,都自带一个unwin...原创 2018-04-11 08:53:52 · 2210 阅读 · 2 评论 -
链接选项 -rdynamic与动态符号表
注意,这是链接选项,而不是编译选项。在将c文件编译成.o的过程中,使用rdynamic是没有任何效果的。只有将.o链接成elf时,才有效果。这主要是对可执行程序而言的,而编译动态库时,即使没有rdynamic选项,默认也会将非静态函数放入动态符号表中(刻意隐藏的函数除外)。一个验证方法显示可执行程序文件内的动态符号(注意,仅仅是动态符号):readelf -Ds a.out默认情况下,可执行程序(...原创 2018-04-10 22:01:46 · 11573 阅读 · 0 评论 -
SPI Flash的擦写注意事项
从规格书上看,SPI flash一般支持3种擦写方式:按sector擦写,按block擦写,整片chip擦写。以KH25L3255E为例,• Serial Peripheral Interface compatible -- Mode 0 and Mode 3• 33,554,432 x 1 bit structure or 16,777,216 x 2 bits (two I...原创 2018-04-12 08:24:11 · 18770 阅读 · 0 评论 -
UBI镜像的编程烧写注意事项
通过编程的方式往mtd设备中烧写ubifs的镜像,需要注意两点:1,擦除整个分区。注意:是擦除整个分区,而不是擦除要烧写的数据字节数!否则会导致ubiattach出错!2,要忽略本block尾部的所有空页(0xff的page),计算方法就是对每个要烧写的block数据,从尾部开始计算0xFF字节的数量,然后进行page对齐。/*min_io_size: page size.length: usua...原创 2018-04-12 08:21:39 · 981 阅读 · 0 评论 -
openssl rsa相关命令
从私钥导出公钥openssl rsa -in private.pem -pubout -out public.pem将PEM格式的私钥导出到文本格式:openssl rsa -in inspur_rsa_key1.pem -text -out inspur_rsa_key1.txtrsa_private_key.pem:-----BEGIN RSA PRIVATE KEY-----MIIEpAIB...原创 2018-04-12 08:16:44 · 2305 阅读 · 0 评论 -
zImage内核与ramdisk及bmem及vmalloc关系的研究探索
问题的初衷:将zImage的内核读入一段内存后,能否将rootfs(ramdisk方式运行)加载到紧挨着kernel之后?担心的问题:由于zImage内核的特殊性,在跳转至内核执行入口之后,内核会自己解压缩自己,解压缩时是否占用额外内存?如过占用kernel之后的内存做为解压缩缓冲,那么就会和rootfs地址发生冲突。测试:给定不带rootfs的kernel vmlinuz-7260a(SDK17...原创 2018-04-12 08:11:50 · 1080 阅读 · 0 评论 -
tcmalloc库两种用法的符号替换原理
利用LD_PRELOAD来加载tcmalloc库在编译时显式链接tcmalloc库试验试验1:不链接tcmalloc试验2:仅显式链接tcmalloc试验3:显式链接libc和tcmalloc,libc在前试验4:显式链接libc和tcmalloc,tcmalloc在前结论利用LD_PRELOAD来加载tcmalloc库那么用户调用malloc肯定是走到tcmalloc中;在编译时显式链接tcma...原创 2018-04-12 08:01:51 · 1973 阅读 · 0 评论 -
关于线程栈与线程地址空间
线程栈与地址空间Linux系统把所有线程都当做进程来实现,线程作为轻量级进程(LWP)。线程仅仅被视为一个与其他进程共享某些资源的进程,而是否共享地址空间几乎是进程和 Linux 中所谓线程的唯一区别。线程创建的时候,加上了 CLONE_VM 标记,这样 线程的内存描述符 将直接指向 父进程的内存描述符,也就是说,线程的mm_struct *mm指针变量和所属进程的mm指针变量相同。所有线程都共享...原创 2018-04-11 09:30:23 · 2977 阅读 · 0 评论 -
避免僵尸线程:线程资源的回收与join、detach
#include <pthread.h>#include <stdio.h>void* __task(void*arg){ return (void*)0;}int main(int agrc, char**argv){ int i = 0; pthread_t pid = 0; int ret = 0; pthread_attr_t attr; for(i=0; i<...原创 2018-04-11 09:27:41 · 3625 阅读 · 0 评论 -
wine的工作原理与自动运行PE程序
一次偶然的情况,发现我电脑上的linux可以直接使用./来执行tools/vnd/BCM7584UPKFxBA/brcm_sign_enc.exe程序,但是另外一台linux电脑就不可以。使用file命令查看该文件是windowsPE格式的程序。由于我电脑上有wine,猜测它是通过wine来执行的,因此 cat /proc/PID/maps,发现确实是被wine执行的,代码段加载了很多wine相关...原创 2018-04-11 09:25:17 · 5143 阅读 · 0 评论 -
MIPS 动态符号的延迟绑定
概述MIPS平台中动态库的装载与解析原理,网上资料并不多,而且很多讲解都是错误的,甚至MIPS宝书《see mips run》中也没有提供详细的方案。因此本人只好通过代码走读和运行验证的方法来详细了解其原理。之所以要了解mips动态符号的解析调用,是因为之前在实现mips backtrace时,对一些调整gp的指令存在疑惑,顾而深入研究一下。先上结论:MIPS动态库中的外部符号调用,是依赖.got...原创 2018-04-10 21:58:13 · 1239 阅读 · 0 评论