linux软件编译、安装、运行

1
2
3
4
5
6
7
8
9
10
11
12
13
# gcc 包含文件查询路径
echo | gcc -E -Wp,-v -
# 加 -Wl,--verbose 来看使用库的路径信息
gcc -o test main.o -ltest -L. -Wl,--verbose
# 查看 so 名字
readelf -a -W elffile | grep SONAME
# 查看可执行文件需要的 so
readelf -a -W elffile | grep NEEDED
# 查看符号 https://stackoverflow.com/questions/34732/how-do-i-list-the-symbols-in-a-so-file
objdump -t Lib1.o
nm -g yourLib.so
# 查看 man 文档
man -l tcpdump.1

1 编译 参考 https://askubuntu.com/questions/466651/how-do-i-use-the-latest-gcc-on-ubuntu 1.1 静态链接 libc - 不推荐链接 glibc (如 getaddrinfo)。用 alpine 的 musl,pull 官方 docker 后安装 这些 - 启动 docker 映射本地的源码,在 docker 中编译 - 用 -pthread 而非 -lpthread,区别 - gcc 链接时使用 -static。一个复杂的 例子 - 编译后 strip 程序 1.2 交叉编译 对于 rpath 和 sysroot 可参考 Building and cross-compile tutorial Ubuntu实现树莓派交叉编译(也解释了 build host target) 交叉编译器 ...

阅读更多

下载

1 批量下载 - Bulk Rename Utility 处理的中文 pair 文件时要保持成 unicode、utf-16、UCS-2 大小端无所谓 - Chrome 扩展 Link Grabber、Simple mass downloader - 必要时使用编程解决,下载 mingw-w64 的 x86_64-win32-seh,安装参考 2 视频下载 - 流媒体是 M3U8 格式,可以使用 ffmepg 命令下载。或使用插件 Stream Video Downloader - youtube 1080P 是音视频分离,且可能分别有两种格式。可以用 youtube-dl 命令行方式下载,然后用 ffmpeg 合并音视频(不合并也可以播放)。也可以用在线解析网站 Youtube Download Online - 使用更新的 yt-dlp,下面命令注意要指定一个 ffmp ...

阅读更多

电子书处理

1 制作书 1.1 从网页爬取 - request + BeautifulSoup + Chrome(或 ChromeHtmlToPdf),selenium 也可生成 PDF - 建议用 puppeteer,见 如何将网络教程 (tutorial) 转成 PDF - 批量删除 PDF 最后一页 1.2 扫描纸质书 参考 asset 中《DIY版简易零边距扫描仪之玻璃夹子方案》 1.2.1 用到的工具 下次试试室内灯光,之前的侧光对于不那么白的纸太暗了 - 玻璃板,超白玻璃 8mm 厚,300 X 250,不要印 3C 标志 - 俯拍架,不用带补光灯 - 蓝牙遥控器 - ComicEnhancerPro_chn 文件处理 - ABBYY FineReader + Foxit 高级 PDF,PDF 制作和 OCR - FreePic2Pdf 书签制作 1.2.2 拍摄 ...

阅读更多

代码分析

1 Call graph 分析函数调用关系图 (call graph) 的几种方法 1.1 静态 1.1.1 Doxygen + Graphviz + Htmlhelp (windows) - 使用 Doxygen + Graphviz + Htmlhelp,Doxygen 配置,再加上下面两图,不要选生成 Chinese,否则 chm 文件乱码 - 生成前将不用的第三方库代码移走 - Doxygen error: failed to run html help compiler on index.hhp 报错似乎不影响 1.1.2 SciTools Understand (windows) C/C++ 项目参考, Buildspy - For gcc/g++ Users - 对于 openssl,一处非常奇怪的宏定义字符串导致编译不过问题, ...

阅读更多

office

表格快速添加多个新行,鼠标放在表格外的换行位置,回车添加新行,按 F4 多次重复添加

将表格选中行下移,Alt + Shift + 下

词典软件

词典设置

1 GoldenDict - 需要 linux 版翻译时使用 GoldenDict - 参考 github GoldenDict 手册 下载64bit QT5 压缩版本 - 新建 portable 变成便携版,生成的 index 子文件中为词典索引 - 将指向 Dictionary 文件夹的快捷方式放入 content,除了欧路专用格式,其它与欧路共用。调整词典顺序 - 虽然可以添加欧路和有道在线词典,但查词会变慢,因此不添加且将维基百科也禁用 - 新建配置文件调整字体和大小,调整搜索框大小,选择显示哪些面板,关闭不可用的屏幕取词相关功能 - 修改设置如下,关闭“双击翻译”,查询结果中继续取词通过弹窗的方式,不使用跳转。基本不使用多标签功能。风格调整为白色背景。 - 设置 AHK 脚本自启动实现双击查词 - 阅读帮助文档中的快捷键实现高效查词 2 欧路词典 - 有生词多终端同 ...

阅读更多

编译工具

1
cmake -B build -G "MinGW Makefiles" -D CMAKE_MAKE_PROGRAM="D:/soft/mingw64/bin/mingw32-make.exe"

- 跟我一起写Makefile - 《嵌入式 Linux C 语言程序设计》,make 1 CMake - 推荐 out of source builds,输出不混在一起,git 工具好管理,可以创建多个 build,如 debug/release。build 与 source 同一等级,不在 source 内部 - 在多个平台测试以避免写出平台相关的 cmake - 选择编译器和 Generator,两者不同搭配可有不同的 build 目录,只需指定一次 - 生成和编译始终在源码根目录 - 调试 CMake - target 可以是虚拟的 - 变量都是字符串类型,值有空格要加引号,多个值用分号连起来。未定义的变量是空字符串。${} 可以嵌套引用,可作为变量名 - unset(myVar) / set(myVar) 用来 unset 变量 - ENV{varNam ...

阅读更多

音视频学习与娱乐

1 应对禁止录屏 - 添加虚拟显示器,将视频传送给另一端后,用另一端的软件录屏 - HDMI 欺骗器 - spacedesk - 视频采集卡 - 用 QQ 远程协助、远程桌面、虚拟机也是这个思路,即绕过软件层面的检测 - 也可找没被检测到的录屏软件 - 保险起见,每天录屏时间不要超过一个合理时间,如 8h - Potplayer 录屏没声音时,打开 - 设备设置 - 摄像头 - 音频录制设备 - 数字音频接口。视频 –> 录制视频(ALT + C),保持默认MPEG-4编码,勾选开启高质量视频压缩,然后把播放器静音,最小化 2 视频笔记 - 用 media extended 插件 - 配合 Templater 和 QuickAdd 实现 自动移动光标到末尾 - timestamp offset 设为 5,避免添加晚了 - 目前版本不支持(v3 支持) ...

阅读更多

blog

1
2
3
4
5
6
7
8
9
10
11
12
npm install hexo
npx hexo init blog
cd blog
npm i hexo-theme-icarus hexo-generator-sitemap hexo-relative-link hexo-mermaid-lastest hexo-filename-title
# 要在 config 中添加配置
npm i hexo-auto-category hexo-feed hexo-extract-excerpt hexo-deployer-git
# source 目录下,关联笔记
mklink /J _posts D:\Documents\Dropbox\notes\blog

# 还有一个 footnote 插件从 hexo-theme-fluid 移植过来
# 还有 add_assets_url.js 添加下载图标
# 所有插件可通过 hexo --debug 选项看到

1 部署 1. 安装 git、node.js,参考 hexo 官网,windows、linux 有区别。git 设置 sock5 代理,见 git 2. github 创建 username.github.io 仓库,实测要用官方的流程设置一下主题才能开通。添加 ssh 密钥 3. 安装 hexo 、主题、插件,主题可根据star 排名来选择 1.1 Google 收录 - 先创建 Google Analytics,添加 tracking_id 到主题配置文件,注意广告拦截和浏览器拦截 - 再创建 Google Search Console,用 Google Analytics 验证所有权 - 在 Google Analytics 选择媒体资源,Search Console 关联,进行两个产品的关联 - 在 Search Console 中提交站点地图 sitemap.xml ...

阅读更多

LFS

  • 书的由来:按自己的喜好搭建,写自己的软件,有一个自己的系统。这本书还可用来理解系统
    • 定制化,尤其是小型嵌入式系统
    • 安全