偷税师大野艾希莉的博客

Boilerplate of Remilia Blog

gprof工具快速上手

介绍 gprof是Linux下一个用于profiling的工具,主要用于分析程序的执行时间。 用法简单介绍 编译程序:使用-pg选项编译你的程序。例如: gcc -pg -o my_program my_program.c 运行程序:执行编译后的程序,它会生成一个gmon.out文件: ./my_program ...

UPnP/DLNA协议实践

背景 买了个JBL的音响,希望能用来实现一些有趣的功能。 UPnP协议 具体细节可以参考这个博客,讲的比较详细。 动手实践 发现设备 使用nanodlna来发现设备,输出结果如下: [urn:schemas-upnp-org:device:MediaRenderer:1][urn:schemas-upnp-org:service:AVTransport:1] JBL Authent...

编程之为什么要封装类型的一些感想

背景 以前一直没有理解到为什么这些框架都喜欢把用的类型再封装一次,尤其是类似于 template<typename T> using xxx::vector<T> = std::vector<T>; 今天遇到一个case忽然能理解了。 之前写了段代码,要求用户传一个回调函数进来,接口类似于 std::function<void(std...

Linux上基于虚拟网卡测试路由功能

背景 最近在做路由功能时发现有一些机器配置之后依然无法路由,因此寻找一个能够本地测试路由功能的方法来排查问题。 方案 在Linux系统上,你可以使用ip命令和虚拟网络接口,如虚拟以太网(veth)对或网络命名空间,来模拟一个虚拟网卡,并通过现有的eth0网卡转发数据给目标IP 192.168.1.1。以下是如何实现这一目的的步骤: 步骤1:创建一个虚拟网络命名空间 网络命名空间允许你...

git init与git fetch克隆仓库还原分支信息的方法

for branch in $(git branch -r | grep "^$remote_name" | sed 's/^$remote_name\///'); do # 检查本地分支是否已存在 if [ "$(git branch --list $branch)" ]; then echo "本地分支 $branch 已存在" else ...

Rust交叉编译

添加toolchain 下载目标机器的工具链,使用rustup target list命令查询 其中,带musl的是静态链接,我这里要编译到arm64版本的,因此添加 rustup target add aarch64-unknown-linux-musl BTW:添加如果很慢的话需要换国内的源,可以参考https://gist.githubusercontent.com/zh61...

使用QEMU运行一个最小的ARM64的Linux系统

步骤 大致步骤其实和上一篇差不多,主要一些区别在于编译时不同,这里就再记录一下 下载Linux源码 git clone https://github.com/torvalds/linux.git 编译 进入仓库后编译内核 make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- defconfig 选择要开关的功能,然后save后编译...

利用QEMU运行Linux内核

步骤 下载Linux源码 git clone https://github.com/torvalds/linux.git 编译 进入仓库后编译内核 make menuconfig 或者创建一个默认的.config make defconfig 选择要开关的功能,然后save后编译 make -j$(nproc) 编译完后将编译好的内核取到工作目录下 cp arc...

在x86-64的Linux上使用QEMU运行arm64的程序

QEMU介绍 QEMU(Quick EMUlator)是一个开源的处理器模拟器和虚拟化工具。QEMU 的主要目标是实现快速、高效的模拟和虚拟化,以便在不同的硬件架构和平台之间运行软件。QEMU 可以模拟多种处理器架构(如 >x86、ARM、MIPS 等)以及多种设备。QEMU 的工作原理可以从两个方面来解释:用户模式模拟(User-mode emulation)和系统模式模拟(...

ubuntu上搭建obfs4代理

背景 机场的ip是有限的,如何利用有限的ip去撬动无限的ip,tor真的给了一个很好的方案 安装 release=$(lsb_release -a 2>&1 | awk '/Codename/{print $2}') cat << EOF | sudo tee /etc/apt/sources.list.d/tor.list deb https://deb.t...