不兼容问题描述

负责 llvm 研发的同事在 cmake 脚本里补充了一个小功能,来获取 llvm 仓库的版本号 tag,实现原理是在官方的生成版本脚本里添加了一个 tag 变量,该 tag 变量值通过执行命令 git describe --contains HEAD 来获取。但是实现过程中,在代码里包含了 ${LLVM_SOURCE_DIR} 路径变量,编译 llvm 时不会报错,但当编译 lldb 时这个 cmake 脚本就会报错,提示找不到这个路径变量,从而产生了不兼容问题。

阅读全文 »

通过 VMware 打开 Ubuntu 虚拟机后,偶尔会发生识别不到网卡,进而无法上网问题。ifconfig 命令也查不到网口,只查到一个 lo 本地环回网络,之前的 ens33 网口信息消失不见了。网上一系列教程都是让该 VMware 网络配置之类的,根本没用,浪费时间和精力。

终极解决方法非常简单,只是一条设置 DHCP 自动获取 IP 的命令:

1
sudo dhclient ens33
阅读全文 »

查看系统下 glibc 版本号时,发现了一个有趣的事情,就是 glibc 竟然可以当作可执行文件进行./ 运行。虽然运行起来后,只是打印了一下版本号就退出了。抱着从张银奎老师那里学到的 “格物” 态度,通过 gdb 调试一下,查看究竟。

阅读全文 »

某软件开发过程中,需要参考 PowerPC 架构代码,但并没有 ppc 架构的机器环境,VMware 只能模拟同架构的 OS,而想要模拟不同架构,进行跨架构开发的话只能通过 qemu 进行模拟。本文记录了在 Linux 和 Windows 两种环境下实现过程:在 Windows 通过 VMware 建立 Ubuntu18.04 虚拟机,然后在 Ubuntu18.04 下用 qemu 实现全系统模拟 PowerPC;或者直接在 Windows 下用 win-64bits 的 qemu 来实现,两种方法都可行。

阅读全文 »

交叉编译 gcc 工具链时,遇到了 [-Werror=missing-attributes] 报错,这是一个把警告当错误的情况,应该是由于高版本 gcc 编译低版本 gcc 时报的错误。然而修改了 configure 命令,在后面跟上了 --disable-werror 选项,并没有用。最终通过设置 CFLAGSCXXFLAGS 才解决了。

阅读全文 »

安装符号

从仓库源里,安装官方发布的符号包,可以先模糊搜索下,找下 “debug symbols for glibc……” 类似的关键字介绍,从而确定符号包的具体名字。比如 deb 包为 libc6-dbg,rpm 包为 glibc-debugutils,不同的操作系统发行版名字会有变动,比如有些包名为 libc6.1-dbgsym。

阅读全文 »

第一天上午:大局观和 linux 内核源码

内核版本介绍

linux4.19 LTS 版本使用率比较高,发的 GDK8 的盒子就是该版本。linux6.1 LTS 版本将会是下一代主流版本,预测生命力至少 5-10 年。

在网站 https://kernel.org/ 里能看到内核版本分支,mainline 主线分支由 Linus Torvalds 维护,stable 稳定分支由 Greg Kroah-Hartman 维护。

阅读全文 »

PowerPC 简介

PowerPC,有时也被简称 PPC,是一种精简指令集(RISC)架构。PowerPC 英文全名为 “Performance Optimization With Enhanced RISC – Performance Computing”。

阅读全文 »
0%