- 博客(26)
- 资源 (5)
- 收藏
- 关注
原创 Linux内存管理--系列文章陆——可执行文件的装载
应届生面试时,经常会有人问程序和进程有什么区别。简单来讲,程序是一个静态物品,就是存放在磁盘上的一些预先编译好的指令和数据的文件。而进程是一种运行的实例,它是程序在操作系统中的一次运行活动,具有生命周期。进程由程序代码、数据、当前执行状态和系统为其分配的资源组成。进程是程序的动态表现形式,它代表了程序的运行状态和执行过程。我们前面的三篇文章,其主要是对程序的处理,程序要运行起来、产生进程就要装载进内存。本章将讲述程序装载的过程。
2024-06-30 01:30:36 958
原创 Linux内存管理--系列文章肆——静态链接
一、引子上篇文章介绍了目标文件,也就是讲到编译过程中的汇编这个阶段。本篇要讲目标文件怎么变成一个可执行文件的,介绍编译过程中的链接。链接主要分为两种,静态链接和动态链接。它们本质上的区别,是在程序的编译和运行过程中使用库的方式不同。
2024-05-26 02:48:54 738
原创 Linux内存管理--系列文章叁——ELF文件分析
从上述过程可以看出,目标文件是编译后但未进行链接的中间文件。虽然未链接可能导致它和最后的可执行文件在结构上有少许的不同,但目标文件和可执行文件的结构、内容相似。所以目标文件一般采用可执行文件的储存格式。动态链接库和静态链接库也属于目标文件,它们也会按照可执行文件的格式来储存。ELF文件类型说明实例可执行文件(Executable File)可以直接执行的程序,一般没有拓展名/bin/bash共享目标文件(Shared Object File)
2024-03-31 02:58:21 946
原创 C语言应用层程序热补丁
Linux提供了一套API来动态装载库。热补丁主要使用如下API:- dlopen,打开一个库,并为使用该库作些准备。- dlsym,在打开的库中查找符号的值。- dlclose,关闭库。在使用一下API时,要提前包含头文件**#include <dlfcn.h>**dlopen函数原型:--filename是你要打开的库路径--flags必须有RTLD_LAZY或者RTLD_NOW其中之一。RTLD_LAZY:在dlopen返回前,对于动态库中的未定义的符号不执行解析。
2024-01-21 14:02:56 821
原创 再见23你好24
1 、今年在工作上没有什么进展,感觉是遇到了瓶颈,并且在公司也是没有在向上的动力了。2 、今年看了不少东西,但看的不仔细。看到的技术也不能很好的应用在目前的工作中。3 、PMP考到了,软考高项虽然买课了,但没有怎么学。4 .吉他正在有序进展,缺少乐理的东西,确实不好学。
2023-12-31 20:57:39 332
原创 Perf工具使用和生成火焰图
perf是Linux 系统自带的系统性能监控工具,它可以对指定的进程或者事件进行采样,并且以调用栈的形式,输出整个调用链上的调用信息。同时perf也能对系统内核线程进行分析,在分析时内核线程依然还在正常运行中,所以这种方法也被称为动态追踪技术。火焰图是基于 perf 结果产生的 SVG 图片,用来展示 CPU 的调用栈。火焰图是看顶层的哪个函数占据的宽度最大。只要有"平顶"(plateaus),就表示该函数可能存在性能问题。
2023-04-18 20:29:54 953
原创 GDB 入门使用
GDB(GNU symbolic debugger)是GNU的一款代码调试工具,它可以实现查看代码内部结构、打印变量值、设置断点、单步调试等功能。注意:若使用gdb调试代码,则在编译阶段需要添加-g选项。gdb只能调试生成的可执行程序,而不能调试.c源代码文件。
2023-01-06 22:09:47 651
原创 再见22你好23
1 、今年在工作上步入了正轨,从打下手到现在负责两个模块 2 、感觉今年有些迷茫,不知道应该去学些什么了 3 、PMP学了,但是因为疫情报不上名考试,只能等明年了。
2022-12-31 19:18:24 165
原创 再见21你好22
现在是2021年12月31日。这一年口罩,体温,遇见,获得,失去,成长,释怀,完结。我与旧事归于尽,来年依旧迎花开。一、验证21年的期望事件1、1、减肥0.0,这个很困难。当然了我瘦了点。2、今年的视频播放器没写完。有空再写吧。3、csdn写了一篇,因为今年主要是在搞新的东西,明年看看能不能多写点。4、摩托车证考下来了,也买了一辆摩托车。2、期望事件有一件半件是要打脸的,今年完成了两项半项,感觉还好吧。今年的脸不算太疼,毕竟没全打。二、对21年的总结1.从老家又来到北京工作,
2021-12-31 19:38:05 167
原创 Robot Framework入门知识
一年没写了,今天终于要写csdn了。这一年里主要是在做自动化测试的东西,所以这么久没有更新。这篇文章主要是介绍Robot Framework的基础语法。一、Robot Framework简介1.Robot Framework是什么用于验收测试和验收测试驱动开发(ATDD)的通用测试自动化框架使用关键字驱动的测试方法使用Python或Java实现的测试库进行扩展2.Robot Framework优缺点优点:多兼容性,可集成PC测试,Web测试,手机测试等缺点:工具运行时无法实时观测脚本运
2021-12-11 20:25:45 2360 2
原创 再见20,你好21!
现在是2020年12月31日。当时光的列车缓缓驶过,今天的我就坐在这里,深情的目光望过去,都是自己去年的影子。渐行渐远的车辙,默默带走了属于20年的喧嚣,却指引着以后的我去追寻那段逝去的时光,当岁月含泪悄悄转身,今天的我就在这里,深情的目光望去,不会试图回到原点,那个出发的站台,但会记起自己背起行囊时,那奋斗的样子。一、验证20年的期望事件1、1.减肥0.0,这个很困难。当然了我是不会给你们说我TM又胖了20斤。2.工作的话,我换了一个公司,目前感觉还可以,c++也正在学习,现在可以写出c++代
2020-12-31 20:56:48 198 3
原创 ftp客户端交叉编译--Curl
一、准备工作本次使用ubuntu18.04和"arm-fsl-linux-gnueabi-"交叉编译器。1、在https://curl.se/download.html下载curl的源代码2、交叉编译工具链安装的安装在我的sqlite3移植安装的文章中有讲,此处不再赘述。二、交叉编译curl1、现在普通模式下解压curltar -xvf curl-7.73.0.tar.gz2、cd curl-7.73.0/进入目录准备开始编译3、输入sudo su./configure CC=arm
2020-11-23 17:59:59 804
原创 Sqlite3交叉编译
一、准备工作本次使用ubuntu18.04和 "arm-fsl-linux-gnueabi-"交叉编译器1、下载Sqlite3在https://www.sqlite.org/download.html里下载Sqlite32、将交叉编译工具链安装1、查看交叉编译器是否在环境变量中加入环境变量的方法:1、sudo vi /etc/bash.bashrc2、输入export PATH=$PATH:/home/vmuser/gcc-4.4.4-glibc-2.11.1-multilib-1.0/ar
2020-11-20 11:49:45 3297
原创 Linux的can口编程
1.先启动can1.在linux下先使用ifconfig -a命令如图显示出来can0和can1。此时can0是打开的,can1是关闭的。2.使用shell脚本打开你要打开的can口,并设置波特率。#/bin/shifconfig canX down #把canX关闭# set bitrate/sbin/ip link set canX type can bitrate xxxxxx#设置canX的波特率位xxxxxxifconfig canX up #把canX打开
2020-07-14 19:05:33 3109 2
原创 QT中简单的emit使用
1.在这里需要感谢一下九月小姐姐的亲情帮助!2.在这个一般使用emit的时候都是用户自定义的一个信号,废话少说上代码。1.这里是两个不相关的类,在qt里可以是两个界面也可以是别的什么。这个一般都是在.h里写的。class A{public: ***//公共的行为或属性*** private: ***//公共的行为或属性***signals: ***//信号***slots: ***//槽***};class B{public: ***//公共的
2020-07-07 14:28:33 36920 7
原创 按照时间变化建立文件名
int FileNameFollowTime(){ char filename[50]; memset(filename,0,50); struct tm *t,t10,tTemp; time_t tt; time(&tt);//先得到当前的时间,建立一个文件名 t = localtime(&tt); t10 = *t; tTemp ...
2020-03-12 20:40:29 539
原创 循环检测磁盘容量,删除较早文件
#define DISK "/mnt/mmcblk0p1/" //SD卡所在位置,在我用海思开发板上。SD卡挂载在该目录下int SDCarChick(){ while(1){ long long total_size1, avail_size1; //磁盘的相关信息 float avail_ratio1; str...
2020-03-12 20:13:35 965
原创 再见19,你好20!
一、19年完成的事情1.我大学毕业了。 2.我找到了工作。3.去天安门看2020年的元旦升国旗。 二、对19年的总结1.在19年里我顺利的拿到了我的大学毕业证和学位证。虽然经历了毕业大补考 和毕业论 文二辩(这好像也不是很顺利的样子),但是不管怎么说吧,毕业了拿到双证了。 2.毕业以后去过培训机构来学习,总感觉学到了什么,但有感觉什么都没有学到。可能是 自己太菜了,领悟不到...
2019-12-31 20:53:25 219 2
原创 shell脚本:自动检测网络掉线和自动重连。
在ppp移植成功后,有时会出现ppp掉线等情况。这篇文章写了一个自动检测连接网络的解决方法。创建一个shell脚本,在里面添加一下内容。#!/bin/shwhile true//先做一个死循环doping -I ppp0 172.16.1.11 &>/dev/null//指定一个出口去ping服务器的局域网ip,将结果重定向到/dev/null里。if [ $? -eq ...
2019-12-24 19:09:57 2050 1
原创 开发板搭建pppd客户端
#1.内核和文件系统的准备(文档附带软件为 arm-hisiv600-linux- 编译而成)##1.在内核的menuconfig中将所有带有ppp的选项选中,编译到内核中(也可以选为模块,但没有编译到内核方便)。然后将编译好的内核烧录到开发板中。#2.可以将文件系统重新烧录,以防止出现无法创建字符设备等问题。#2.软件准备(编译参考他人的帖子) ##1.准备pppd文件###1....
2019-12-19 15:40:58 1365
arm-fsl-linux-gnueabi-交叉编译工具链
2020-07-04
ppp移植开发板.rar
2019-12-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人