
linux
风炫灬梦想
默默前进
展开
-
MakeFIle学习3-Android的MakeFile基础
3.Android的makefile基础Android.mk是什么Android.mk是一个向AndroidNDK构建系统描述NDK项目的GNU的Makefile片段。主要用来编译生成以下几种:APK程序:一般的Android应用程序,系统级别的直接push即可Java库:Java类库,编译打包生成的JAR文件C C++应用程序:可执行C C++应用程序C C++静态库:编译生成C ...原创 2019-11-03 17:01:09 · 346 阅读 · 1 评论 -
MakeFile学习2-语法
makefile语法什么是makefilemakefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要重新编译,如何进行链接等操作。makefile就是自动化编译,告诉make命令如何编译和链接makefile里有什么makefile 包含以下五个:显示规则隐晦guize变量定义文件指示注释makefile规则target ... : prerequisi...原创 2019-11-03 16:59:41 · 379 阅读 · 0 评论 -
MakeFile学习1-原理
1.静态库用于动态库原理和编译流程编译分为四大过程预编译编译汇编链接预编译完成宏替换、文件引入,以及去除空行,注释等,为下一步编译做准备。也就是对各种预编译命令做处理,包括头文件的包含,宏定义的拓展、条件编译的选择等。选项-E让gcc在预处理结束后停止编译,test.i文件为预处理后的输出文件gcc中可以通过-o 来指定输出文件#test.c文件内容#include &l...原创 2019-11-03 16:58:46 · 184 阅读 · 0 评论 -
Shell脚本编写与执行编译ffmpeg库
7.Shell脚本编写与执行编译ffmpeg库ffmpeg是什么ffmpeg是一套开源免费跨平台的多媒体框架,他提供了录制,转换以及流化视屏的完整方案ffmpeg是一套可以用来记录,转换数字音频,视频并且能将其转化为流的开源计算机程序ffmpeg是一个多媒体处理工具,有非常强大的功能,包括视频采集功能,视频格式转换,视屏抓图,给视屏加水印等。组成部分FFmpeg工具ffmpeg...原创 2019-11-03 16:57:07 · 801 阅读 · 0 评论 -
Shell方法参数传递机制详解
6.方法参数传递机制详解函数介绍Linux Shell 中的函数和大多数语言的函数一样将相似的任务或者代码封装到函数中,供其他地方调用第一种形式name(){command;command;}第二种形式[ function ] funnane[()]{ action; [return int;]}其中 [] 中的内容是可选的例子...原创 2019-11-03 16:56:32 · 796 阅读 · 0 评论 -
Shell重定向
5.语法(重定向)04Linux 输出目的地显示器文件Linux 文件描述符标准输入 standard input 0 默认设备键盘标准输入 standard output 1 默认设备显示器错误输出 error output 2 默认设备显示器重定向你可以从显示器获取输入也可以输出到显示器我们把来源称之为重定向到xxx输出重定向 >输入重定向 <...原创 2019-11-03 16:56:02 · 165 阅读 · 0 评论 -
Shell运算符使用
4.语法(运算符详解)03shell算数运算文档前提条件 a=10,b=20算数运算符运算符说明含义+加法expr $a + $b 结果为30-减法expr $a - $b 结果为-10*乘法expr $a \* $b 结果为200/除法expr $a / $b 结果为2%取余expr $a %$b 结果为0=赋值...原创 2019-11-03 16:55:30 · 523 阅读 · 0 评论 -
Shell中if使用
3.语法(if语句)02if语法##### 第一种写法 ###### 注意 第一种写法是不能加语句的if(表达式);fi##### 第二种写法 #####if(表达式);then 语句elif(表达式) 语句else 语句fi注意点 if后面不需要{} 只需要;语句一定要有tab,不能是空格。空格在Shell语法中不能随便写,是一种特殊语义 ...原创 2019-11-03 16:54:35 · 1249 阅读 · 0 评论 -
Shell语法(循环+文件读写)
2.语法(循环+文件读写)01for循环语法格式for 变量 in 字符串do 语句1done介绍完for语法格式后,先看一下Linux自带的一个类似for循环的命令seq命令seq 1 15输出1一直到15123456789101112131415示例#!/bin/bashfor i in `seq 1 15`do ...原创 2019-11-03 16:54:01 · 6504 阅读 · 0 评论 -
Shell变量的定义到使用
1.Shell变量的定义到使用Shell入门shell 可以理解为批处理指令,通过shell编程将避免做一些重复的工作,这里先看一个demo入门执行的时候需要将 // 后面的去除,shell的注释是# 这里为了方便使用//demo.sh#!/bin/bash // #!这里是一个标记,告诉系统这个脚本需要使用什么解释器来执行 一定要有,不然shell不知道由谁来执行#File b...原创 2019-11-03 16:53:18 · 187 阅读 · 0 评论 -
内核学习15-字符设备驱动详解
linux 内核学习15-字符设备驱动详解1. 字符设备驱动的抽象这里将上面学习的内容进行解析<include/linux/cdev.h>struct cdev{ struct kobject kobj; struct module *owner; const struct file_operations *ops; struct list_h...原创 2019-09-02 22:35:10 · 261 阅读 · 0 评论 -
linux 内核学习14-从一个简单的字符设备开始
linux 内核学习14-从一个简单的字符设备开始1. 设备分类字符设备块设备网络设备2. 准备工作编写一个简单的字符设备驱动,实现基本的open,read和write方法编写相应的用户空间测试程序,要求测试程序调用read的函数,并能看到对应的驱动程序执行了相对的read方法MakefileBASEINCLUDE ?=/lib/modules/`uname -r`/...原创 2019-09-02 18:33:10 · 304 阅读 · 0 评论 -
linux 内核学习12-符号共享
linux 内核学习12-符号共享我们在为一个设备编写驱动程序时,会把驱动按照功能分为好几个内核模块,这些内核模块之间有一些接口函数需要互相调用,这个怎么实现呢?Linux内核为我们提供了两个宏来解决这些问题。EXPORT_SYMBOL()EXPORT_SYMBOL_GPL()EXPORT_SYMBOL() 把函数或者符号对全部内核代码公开,也就是将一个函数以符号的方式导出给内核中的其他...原创 2019-09-02 13:28:57 · 219 阅读 · 0 评论 -
linux 内核学习11-内核模块参数
linux 内核学习11-内核模块参数内核模块作为一个可拓展的动态模块,为Linux内核提供灵活性,所以需要依据不同的场景来传递不同的参数,实现不同的功能1. 准备工作#define module_param(name,type,perm) module_param_named(name,name,type,perm)#define MODULE_PARM_DESC(_parm,...原创 2019-09-02 13:07:05 · 378 阅读 · 0 评论 -
linux 内核学习2-使用笨叔叔定制的内核
linux 内核学习2-使用笨叔叔定制的内核1. 目的编译一个ARM版本的内核镜像,谁让我是做Android的呢!并且在QEMU上运行。2. 准备工作2.1 开发环境ubuntu 18.4虚拟机笨叔叔调教好的linux源码 源码地址2.2 需要下载的软件包sudo apt-get install qemu libncurses5-dev gcc-arm-linux-gnueab...原创 2019-08-29 19:12:15 · 806 阅读 · 0 评论 -
linux 内核学习3-自己编译一个ARM Linux内核
linux 内核学习3-自己编译一个ARM Linux内核1. 目的编译一个ARM版本的内核镜像,谁让我是做Android的呢!并且在QEMU上运行。2. 准备工作2.1 开发环境ubuntu 18.4虚拟机linux内核版本 4.19.67 linux内核地址busybox 工具包busybox 编译$ cd busybox$ export ARCH=arm$ exp...原创 2019-08-29 20:47:13 · 3314 阅读 · 3 评论 -
linux 内核学习4-Vim变身为强大的IDE工具
linux 内核学习4-Vim变身为强大的IDE工具1. 目的vim环境下debug linux代码的配置2. 准备工作$ git clone https://github.com/VundleVim/Vundle.vim.git~/.vim/bundle/Vundle.vim2.1配置内容" Vundle manageset nocompatible ...原创 2019-08-29 21:10:02 · 862 阅读 · 0 评论 -
git中merge和rebase的区别
git中merge和rebase的区别合并之前的分支merge合并之后的分支rebase合并之后的分支可以发现,他们的顺序不同。merge是按照时间的顺序来排序原创 2019-08-29 23:30:16 · 222 阅读 · 0 评论 -
linux 内核学习6-通过QEMU调试ARM Linux内核
linux 内核学习6-通过QEMU调试ARM Linux内核1.实验准备安装gdb-multiarchsudo apt-get install gdb-multiarch原创 2019-08-30 23:13:25 · 900 阅读 · 0 评论 -
linux 内核学习7-通过QEMU调试ARMV8的Linux内核
linux 内核学习7-通过QEMU调试ARMV8的Linux内核1. 准备工作$ sudo apt-get install gcc-aarch64-linux-gnu gcc-5-aarch64-linux-gnu2. 切换GCC版本默认的GCC版本是7.+的版本,现在要替换为5.+的版本设置gcc-5的版本sudo update-alternatives --install...原创 2019-08-31 17:55:53 · 1067 阅读 · 0 评论 -
# linux 内核学习10-从第一个内核模块开始
linux 内核学习10-从第一个内核模块开始1. 准备工作c文件#include <linux/init.h>#include <linux/module.h>// 该内核模块初始化函数 可以通过insmod命令来加载一个内核模块static int __init my_test_init(void){ printk("my first ke...原创 2019-08-31 20:30:15 · 244 阅读 · 0 评论 -
linux 内核学习8-通过Eclipse+QEMU调试ARM内核
linux 内核学习8-通过Eclipse+QEMU调试ARM内核1. 准备工作下载地址:https://archive.eclipse.org/technology/epp/downloads/release/oxygen/3/eclipse-cpp-oxygen-3-linux-gtk-x86_64.tar.gz不建议使用下面的方式,在ubuntu18.4无法运行sudo apt-...原创 2019-09-01 22:32:48 · 287 阅读 · 0 评论 -
linux 内核学习9-在QEMU中添加文件系统支持
linux 内核学习9-在QEMU中添加文件系统支持1.准备工作linux内核源码2.添加文件系统支持在Linux中创建一个64M的镜像(image)dd if=/dev/zero of=swap.img bs=512 count=131072 <这里使用dd命令将swap.img 通过sd卡的方式加载到QEMU中 qemu-system-arm -nogra...原创 2019-09-01 22:33:15 · 575 阅读 · 0 评论 -
linux 内核学习1-替换linux自带的内核
linux系统学习,替换linux的内核1. 准备工作1. 开发环境ubuntu 18.4虚拟机linux内核版本 4.19.672. 需要下载的软件包sudo apt-get install libncurses5-dev libssl-dev build-essential openssl3. 其他准备工作解压linux内核代码xz -d linux-4.19.67.t...原创 2019-08-28 23:46:35 · 597 阅读 · 0 评论