06 2019 档案

摘要:一般来讲,应用程序使用的内存空间里有如下的默认区域: 1 栈:用于维护函数调用的上下文。栈通常在用户空间的最高地址出分配,通常有数兆字节的大小 2 堆:堆是用来容纳应用程序动态分配的内存区域。比如使用malloc和new分配内存就从堆里分配。 3 可执行文件镜像:这里存储着可执行文件在内存里的映射 阅读全文
posted @ 2019-06-25 15:55 red_leaf_412 阅读(4466) 评论(0) 推荐(1) 编辑
摘要:静态链接情况下,操作系统接着就把控制权交给可执行文件的入口地址,然后程序开始执行。但在动态链接情况下,操作系统还不能在装载完可执行文件后就把控制权交给程序。因为可执行文件依赖很多共享对象。这个时候可执行文件中对于很多外部符号的引用还处于无效地址的状态,也就是还没有跟相应的共享对象中的实际位置链接过来 阅读全文
posted @ 2019-06-24 14:17 red_leaf_412 阅读(593) 评论(0) 推荐(1) 编辑
摘要:对于之前的动态链接生成的可执行文件,来看下进程的地址空间分布。首先在pro1.c中加入sleep(-1)进行延时,然后将可执行完文件转入后台处理,通过pid来查询进程的地址空间分布。 cat /proc/3488/maps 558a542d3000-558a542d4000 r-xp 0000000 阅读全文
posted @ 2019-06-13 17:43 red_leaf_412 阅读(464) 评论(0) 推荐(0) 编辑
摘要:系统为ubuntu18.04, 在编译内核模块insmod helloworld.ko的时候提示如下错误。 出现此问题的原因是,Ubuntu Kernel 使用 EFI_SECURE_BOOT_SIG_ENFORCE 内核配置,这样会阻止内核载入第三方模块 解决方法: 1 sudo apt inst 阅读全文
posted @ 2019-06-11 14:05 red_leaf_412 阅读(2155) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示