
Linux
文章平均质量分 73
ʚ兔子的先森ɞ
一只立志于养老婆的程序猿。
展开
-
Linux network — 网络层收发包流程及 Netfilter 框架浅析
本文主要对 Linux 系统内核协议栈中网络层接收,发送以及转发数据包的流程进行简要介绍,同时对 Netfilter 数据包过滤框架的基本原理以及使用方式进行简单阐述。Linux 网络协议栈是 Linux 内核中非常重要的子系统之一,虽然上层应用的开发维护工作极少涉及修改内核网络部分的工作,但了解其设计思想,基本工作原理,也可以为我们日常工作带来比较不少的帮助,特别是涉及到前后台网络交互,服务器网络性能相关的工作时。原创 2024-01-02 18:55:14 · 3296 阅读 · 0 评论 -
Linux内核基础 — initcall机制
init 或者 .initcalls 段的特点就是,当内核启动完毕后,这个段中的内存会被释放掉。对上层而言,linux内核提供xxx_init(init_func)宏定义接口,驱动开发者只需要将驱动程序的init_func使用来修饰,这个函数就被自动添加到了上述的段中,开发者完全不需要关心实现细节。不难想到另一种方式,就是集中提供一个地方,如果你要添加你的驱动初始化程序,你就将你的初始化函数在这个地方进行添加,在内核启动的时候统一扫描这个地方,再执行这一部分的所有被添加的驱动程序。原创 2023-07-24 17:27:56 · 1342 阅读 · 0 评论 -
linux内核中修改TCP MSS值
最近在解决一些网络相关的问题的时候,我发现许多客户的需求可以不用费劲周折在代码中找到修改的位置,可以直接修改内核中一些网络相关的参数,在大部分情况下即可满足需求,减少时间和精力的消耗(俗称偷懒)。 MTU: Maxitum Transmission Unit 最大传输单元 MSS: Maxitum Segment Size 最大分段大小 MSS最大传输大小的缩写,是TCP协议里面的一个概念。 MSS就是TCP数据包每次能够传输的最大数据分段。为了达到最佳的传输效能TCP协议在建立连接的时候通原创 2022-06-22 16:07:20 · 3030 阅读 · 5 评论 -
error: ‘for‘ loop initial declarations are only allowed in C99 mode
linux系统下的c编程与windows有所不同,如果你在用gcc编译代码的时候提示‘for’ loop initial declarations are only allowed in C99 mode,可能就是因为你在loop循环比如for中使用未预先定义的变量,比如:error: 'for' loop initial declarations are only allowed in C99 modenote: use option -std=c99 or -std=gnu99 to compile原创 2022-03-01 20:04:14 · 5953 阅读 · 0 评论 -
【gcc】warning信息梳理
gcc warning信息梳理-Wall,-Wextra开启的告警-Wall,-Wextra开启的告警-Waddress:可能是无意义的地址使用方式(包括函数地址、变量地址等)。void f (int, int, int, bool, int *);void g (int i){ f (1, 2, 3, &i, &i);}# warning: the address of ‘i’ will always evaluate as 'true' [-Waddress]原创 2022-01-21 16:34:53 · 4673 阅读 · 0 评论 -
Linux下执行程序出现Text file busy错误提示时的解决方案
Linux下执行程序出现Text file busy错误提示时的解决方案 Linux Text file busy(文本文件忙),发生此错误是因为当前文件已被占用,因此只要找出占用该文件的进程并杀死就可以了。执行步骤找出占用该文件的进程:注意: 此步需要进到文件所在目录,或将文件路径写全(sudo) fuser filename(文件名)杀死占用该文件的进程(sudo) kill -9 进程id示例cp: system/bin/hostapd: Text file bus原创 2022-01-05 16:54:34 · 19009 阅读 · 0 评论 -
gcc 交叉编译链的安装
gcc 交叉编译链的安装1. gcc编译链简介2. 交叉编译链的下载3. 交叉编译链的安装3.1 把下载的文件放到Linux中3.2 解压3.3 在 Linux 中创建目录:3.4 将解压后的文件拷贝到 /tool/arm 中3.5 把交叉编译工具添加进环境变量3.6 检验是否安装成功1. gcc编译链简介 ARM 裸机、Uboot 移植、Linux 移植这些都需要在 Ubuntu 下进行编译,编译就需要编译器,我们现在要编译的是 ARM 架构的代码,所以我们需要一个在 X86 架构的 PC 上运行,原创 2021-12-20 18:24:54 · 3115 阅读 · 0 评论 -
Pm命令用法
Pm命令用法1. Pm主要命令2. 详细参数2.1 list packages2.2 pm install2.3 其他参数 在公司的Linux环境下目前不能使用adb命令,需要使用pm命令,因此写一篇文章学习一下,pm命令主要应用在安装APK的时候。1. Pm主要命令命令格式:pm <command>命令列表:命令功能实现方法list packages列举app包信息PMS.getInstalledPackagesinstall [options]原创 2021-11-23 16:03:31 · 6808 阅读 · 0 评论 -
Linux 编译 Android 9.0 与 Android 4.4 出现make版本冲突问题
make版本问题问题描述解决方案问题描述我在编译完Android 9.0的代码后,再次编译Android 4.4的代码,发现报以下错误。You are using version 4.2.1 of make.Android can only be built by versions 3.81 and 3.82.see https://source.android.com/source/download.html根据提示我们可以看到,是make版本过高的问题。解决方案在询问了公司 IT 大原创 2021-11-01 10:46:51 · 732 阅读 · 0 评论 -
Linux下出现Read-only file system解决办法
问题描述涉及到修改/保存条目等需要写磁盘操作的命令都无法使用(如tar、cp、mv、rm、chmod、chown、wget下载等指令),总是提示Read-only file system,也就是说系统是只读的,什么也写不了。解决方案查看/etc/fstab文件,在其中发现这样的一样记录(注意errors=remount-ro段),如下:/dev/sda1 / ext3 errors=remount-ro 0 1这种情况通常都是由于系统发现磁盘硬件故障或文件系统中文件被损坏之后而采取的保护机制导致的原创 2021-11-04 14:50:33 · 84845 阅读 · 1 评论