自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(573)
  • 收藏
  • 关注

原创 LLVM 一些在老版本 LLVM 是 warning,在新版本 LLVM 是 error 的报错

网页:https://www.redhat.com/en/blog/new-warnings-and-errors-clang-16。

2024-04-29 17:37:49 318

原创 git 如何向仓库上传大文件?large file storage lfs(超过 100M)

第一个网页说明了:git 免费版本支持的大文件最多 2G。第二个网页说明了 git lfs 的具体操作方法。

2024-04-28 13:45:06 135

原创 (done) 什么是 SVD 奇异值分解?什么是 TruncatedSVD 截断奇异值分解?

来源:https://www.bilibili.com/video/BV16A411T7zX/?

2024-04-23 23:38:26 121

原创 (done) 什么是正交矩阵?

来源: https://baike.baidu.com/item/%E6%AD%A3%E4%BA%A4%E7%9F%A9%E9%98%B5/407284?A=E,则n阶实矩阵A称为正交矩阵 [1]。表示“矩阵A的转置矩阵”)或A。正交矩阵的列是一个标准正交集。=E(E为单位矩阵,A。

2024-04-23 23:36:49 82

原创 什么是 PMI ? Pointwise mutual information. 点间互信息

其实基本就是用来表达两个词汇之间的关联性 (它们一起出现的概率)

2024-04-23 20:19:23 62

原创 使用 python, wget, curl 三者结合,制作一个爬虫(批量从镜像站点下载包)

【代码】使用 python, wget, curl 三者结合,制作一个爬虫(批量从镜像站点下载包)

2024-04-18 01:09:59 109

原创 wget 和 curl 分别有什么作用?(linux 上一些和网络有关的常用命令)

这个命令一般用来下载东西,下载的是那些 “点击就能下载的东西”可以得到网页的 html 源码。

2024-04-17 22:49:29 109

原创 TexStudio + MikTex 手动安装宏包

遇到上面这个 “宏包安装” 提示窗口后,设置来源为本地,随后在这个网址。下载所需的宏包,放到本地仓库里,即可。

2024-04-17 21:19:57 223

原创 windows 如何安装 perl ?

链接:https://strawberryperl.com/我们选择安装 “草莓 perl”下载后根据引导安装就行了。

2024-04-17 20:26:37 201

原创 python3 正则表达式 re 包中,re.match 和 re.search 的差别?

举个例子,如果你要匹配字符串 “abcde” 中的 “bcd”,使用 re.match() 将返回 None,因为 “bcd” 不在字符串开头;re.match() 和 re.search() 是 Python 中用于正则表达式匹配的两个函数,它们之间的主要差别在于匹配的起始位置和作用范围。这个方法尝试从字符串的起始位置匹配模式,如果字符串的起始部分就能匹配成功,就返回一个匹配对象;因此,re.match() 只匹配字符串的开头部分,如果你想要匹配整个字符串,需要确保模式从字符串的起始位置开始。

2024-04-17 13:33:30 128

原创 vscode 折叠和展开代码块

即可展开被折叠的代码块。,即可折叠选中的代码块。

2024-04-17 13:20:55 138

原创 cstddef not found

如果使用的是 clang 编译器,安装下面这几个库。

2024-04-17 10:44:13 60

原创 LLVM 插桩遇到奇怪bug(比如死循环),但是又没有足够的报错信息怎么办?

1.首先给编译命令加上 -emit-llvm -S 选项,先测试插桩步骤是否出问题。通常来说,这一步会给出更多报错信息,帮助我们 debug。

2024-04-16 22:33:20 147

原创 LLVM 插桩 LLVM IR LandingPadInst Invoke 指令

总结一下,就是说,如果有 LandingPadInst 指令,那么它必须是一个基本块的第一个非phi指令。根据 CHATGPT4。

2024-04-16 22:30:49 161

原创 (u) ghidra 反汇编可执行文件报错:Only DWARF version 2, 3, or 4 information is currently supported (detected 5).

ghidra 反汇编可执行文件报错:Only DWARF version 2, 3, or 4 information is currently supported (detected 5).分析原因:clang-17 使用了 DWARF5 版本,这个版本无法让 ghidra 解析。尝试了给 clang 加上 -gdwarf-4/3/2 选项,无用。TODO: 解决方案尚未找到。

2024-04-15 11:47:44 121

原创 ISO C99 and later do not support implicit function declarations

具体看这篇文章:https://www.redhat.com/en/blog/new-warnings-and-errors-clang-16。有一些错误,在使用 clang-9 时不会触发,而在使用 clang-17 时会触发。这是因为,更先进的 C 标准把一些本来是 warning 的东西升级成了 error。

2024-04-15 00:00:16 270

原创 ubuntu20.04 xxxx is not in the sudoer file error

首先使用 su 命令提升到 root 权限,然后输入下面的命令。

2024-04-13 19:22:43 89

原创 VBOX ubuntu20.04 安装好后无法启动 terminal 是什么原因?

先点开 Settings ----> Region & Language , 如下。把系统的语言和地区设置成一致的,然后重启即可。这种情况通常是 字符问题。

2024-04-13 18:16:11 196

原创 怎么下载 ubuntu20.04

资源在这里:https://releases.ubuntu.com/focal/

2024-04-13 17:30:45 68

原创 error: aggregate value used where an integer was expected

C语言的类型强制转换只有在数量类型之间才能进行转换,结构类型(包括 union,struct)不是数量类型(Scalar Type),无法进行强制转换;参考这个博客:https://blog.csdn.net/swj9099/article/details/81359690。原文链接:https://blog.csdn.net/swj9099/article/details/81359690。数量类型包括算术类型和指针类型,算术类型由包括整数类型和浮点类型。可以用union来代替数据转换。

2024-04-12 13:35:46 119

原创 C语言结构体,成员地址高低位问题

说明结构体中,排前面的成员在低地址,排后面的成员是高地址。

2024-04-12 12:40:18 154

原创 使用 ghidra 无法通过 ghidra script 或者 binary 的 CFG 时,可能的错误:没有分析 binary

点击左上角的 Analysis。

2024-04-08 12:47:36 433

原创 根据朋友介绍的,用来生成 call graph 函数调用关系的工具

静态:doxygen动态:

2024-04-07 18:11:11 115

原创 使用 doxygen 生成项目的 callgraph call graph,函数调用图

TODO: here。

2024-04-07 16:39:06 334

原创 C 语言中的 end, _end 符号

这些符号不是在 C 语言文件和头文件中定义的,它们是 ld 在链接所有 .o 文件的时候自己添加的。end 和 _end 的地址,就是最终程序的堆的起始地址。可以看到相关符号的解释。

2024-04-06 22:51:17 342

原创 int brk(void *addr); 和 void *sbrk(intptr_t increment); 这两个函数分别有什么作用?

描述如下:(这段英文挺好读的,没必要翻译了)

2024-04-06 21:57:53 108

原创 查阅Linux中已经实现的系统调用 syscall system call

【代码】查阅Linux中已经实现的系统调用 syscall system call。

2024-04-06 15:43:23 112

原创 查阅不同架构的系统调用约定, 包括参数传递和返回值 ABI call convention calling convention syscall systemcall

【代码】查阅不同架构的系统调用约定, 包括参数传递和返回值 ABI call convention calling convention syscall systemcall。

2024-04-06 15:42:22 118

原创 关于 elf loader 的编写

在编写 elf loader 的时候,实际上只有下图这一部分 “Program Headers” 是有用的。所以,只要把这些部分加载进内存里,再跳转到 entrypoint 就完事了,是不是很容易啊?凡是类型为 “LOAD” 的就是需要加载进内存的部分。可以使用如下命令观看 elf 文件的信息。

2024-04-06 15:10:56 224

原创 ld 链接器默认把 _start 函数作为 entrypoint

来源:https://www.gridbugs.org/if-you-use-a-custom-linker-script-_start-is-not-necessarily-the-entry-point/也就是说,ld 把程序入点放到了 <message> 这个字符串常量,这显然是有问题的。根据这个警告 warning,ld 把程序入点设置在了 0x401000。因此,_start 符号是必要的,除非我们编写自己的链接脚本。我们用 objdump -d 看一下反汇编结果,如下。

2024-04-06 11:59:59 187

原创 C语言 ((void)0); 是啥意思?

参考:https://stackoverflow.com/questions/2198950/why-is-void-0-a-no-operation-in-c-and-c。就是一个占位符、合法、不执行任何操作。

2024-04-05 22:10:06 88

原创 操作系统中常常提到的 PCB 是什么?进程控制块

为了描述控制进程的运行,系统中存放进程的管理和控制信息的数据结构称为进程控制块(PCB Process Control Block),它是进程实体的一部分,是操作系统中最重要的记录性数据结构。它是进程管理和控制的最重要的数据结构,每一个进程均有一个PCB,在创建进程时,建立PCB,伴随进程运行的全过程,直到进程撤消而撤消。来源:https://baike.baidu.com/item/PCB/16067368?

2024-04-05 17:14:39 324

原创 什么是 libtool?

来源:https://en.wikipedia.org/wiki/GNU_Libtool。大概的意思就是:这是一个跨平台的 C 编译构建工具。

2024-04-01 20:34:40 201

原创 解决Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools“

来源:https://blog.csdn.net/xianjianwu1/article/details/129908678。

2024-03-31 22:49:19 119

原创 #error is_trivially_destructible is not implemented

如果遇到依赖问题,可以参考这个博客 [apt apt-get dependency 依赖问题 libc+±9-dev : Depends: libc++1-9 (= 1:9.0.1-12) but it is not going to]如果还是不行 (比如使用的编译器是 clang,同时使用了如 -stdlib=libc++, -lc++ -lc++abi 之类的选项)通常安装好了 libc++ 和 libc++abi 的依赖,就能正常编译了。那这个时候有可能是某些依赖没安装好。

2024-03-30 21:27:00 193

原创 apt apt-get dependency 依赖问题 libc++-9-dev : Depends: libc++1-9 (= 1:9.0.1-12) but it is not going to

具体来说,libc+±9-dev 需要 libc++1-9 版本 1:9.0.1-12,但后者出于某种原因不能被安装。这类依赖问题在Linux系统上相对常见,通常是由包管理器无法解决的依赖冲突、版本不匹配或软件源配置错误引起的。确保你的软件源(repositories)配置正确,并且包括了包含你试图安装包的官方或第三方源。请记住,在尝试手动解决依赖问题时,要小心,因为不正确的操作可能会破坏系统的包管理状态。确保你的包管理器(如apt)的包索引是最新的。有时,直接尝试安装缺失的依赖包可以解决问题。

2024-03-30 21:15:50 176

原创 使用 apt-get 安装一些 LLVM 相关的依赖 还有 LLVM 本身 以及安装老版本 LLVM

首先找到 ubuntu 这栏,把红圈圈起来的四行拷贝进 /etc/apt/sources.list 里,随后 sudo apt-get update。这个网页包含着如何使用 apt-get 安装 LLVM 相关依赖以及工具的说明。2.安装必要的组件,比如 clang-17 之类的。网页:https://apt.llvm.org/下面是一个例子,比如我们要安装 llvm17。3.再根据需要安装一些关键包。1.获取文档签名的其中一个。再运行下面这张图的命令。

2024-03-30 21:00:00 177

原创 确认自己系统 gcc 支持的 C++ 版本

来源:https://stackoverflow.com/questions/34836775/compiler-standards-support-c11-c14-c17。下面这个命令可以打印 gcc 支持的 C++ 版本。

2024-03-30 19:58:53 102

原创 确认自己系统 clang 支持的 C++ 版本

来源:https://stackoverflow.com/questions/49012223/clang-reliably-detect-supported-c-standard-from-command-line-or-python。两个命令的复制粘贴版在下面。答案来源的图片如下图。

2024-03-30 19:55:51 202

原创 一个 C/C++ 实验:头文件定义某个函数的声明,但在编译的时候没有一起编译那个函数的实现,能否成功编译?

TODO: here。

2024-03-28 15:59:07 232

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除