背景
当前的工作与SVN有关,今天使用SVN库编写了一个小程序,编译代码时发现编译器告警:”warning: ‘svn_client_ls2’ is deprecated (declared at /home/svn/apps/svn/include/subversion-1/svn_client.h:4942)”。
| 1 | svn@linux-rwdx:~/objs/motadou> make | 
当前的工作与SVN有关,今天使用SVN库编写了一个小程序,编译代码时发现编译器告警:”warning: ‘svn_client_ls2’ is deprecated (declared at /home/svn/apps/svn/include/subversion-1/svn_client.h:4942)”。
| 1 | svn@linux-rwdx:~/objs/motadou> make | 
相比于静态链接库,Linux上的动态链接库和可执行程序都是ELF格式。原理上动态库也能和可执行程序一样直接运行。
比如,可以直接运行“/lib64/ld-linux-x86-64.so.2”,还有“/lib/x86_64-linux-gnu/libpthread.so.0”, 还有“/lib/x86_64-linux-gnu/libc.so.6”等等。举个例子,libc.so.6是C/C++运行时库的GNU实现,我们直接运行该动态库,打印如下信息:
可见,动态库直接运行后,提示了该动态库的编译信息、版本信息等等。在实际项目中,我们也可以为动态库增加类似功能,用户直接运行我们提供的动态库之后,我们就打印该库的编译环境、运行方法、编译版本等等信息,或者完成其他功能。
昨天看一篇关于libco的博文,里面提到了一个由于全静态链接导致的bug。全静态链接?以前没有接触过这个概念,特意到网上搜了下,原来是一个程序将其依赖的所有动态库都替换成对应静态库,即使是libc.so,libm.so,libstdc++.so这种系统级别的动态库。全静态链接出来的可执行程序,不依赖任何动态库,拷贝到任何一台机器,只需要操作系统,这个程序就可以run起来。
这种全静态链接的方式,肯定有好有坏。
那全静态链接如何优雅的实现呢?gcc为我们提供了(-static)、(-Wl,-Bstatic)、(-Wl,-Bdynamic),这么几个选项。
重启VMWare虚拟机中的操作系统,会在极端时间内重启完成,无法选择从诸如CD-ROM的其他介质启动,所以就不方便使用当前已创建的虚拟磁盘,来重新安装操作系统。本文记录如何利用已创建的磁盘来重装系统。
安装云盘软件之后,导致原来Svn和Git的文件图标都不显示了。按照如下的方法找回图标。
我在Github上有多个账号:
按照平时的使用习惯,每个账号我都会设置SSH keys进行免密登录。本文就是记录一种可以在同一台电脑上同时使用多个Github账号的方法。
如果之前你设置过全局user.name和user.email,必须先清理掉该全局设置。
也就是说,不能使用全局的user.name和user.email,必须每个仓库设置自己本地的user.name和user.email。
清理方法如下:
1
2$ git config --global --unset user.name
$ git config --global --unset user.email
使用虚拟机安装Debian,图形界面太耗资源,也用得比较少,所以还是以命令行界面启动比较好。如下是Debian12.10的设置方式。
Ubuntu通过netplan来配置网卡,为了研究netplan的使用方法和实现原理,我们首先通过编译安装的方法,重新定制netplan。
本文记录编译netplan的方法。
我在Ubuntu 22.04版服务器上,使用 “sudo apt install net-tools” 命令安装net-tools软件包时,系统弹出了一个以前从未出现过的,名为 “Daemons using outdated libraries” 的对话框,让我手动选择需要重启的services服务。
对话框如下所示:

第一次碰到这种情况,感到有些懵:为什么会出现这个对话框?如何选择?选择后会产生哪些影响?何时会出现类似的提示?原理是什么?
Ubuntu安装完毕之后,apt默认通过源地址 http://archive.ubuntu.com/ubuntu ,拉取apt源文件以及安装包。主机 archive.ubuntu.com 指向英国伦敦的服务器,一般来说可以正常使用,但是使用国内镜像源速度更加快,尤其对大文件更是如此。
本文记录国内一些质量比较好的镜像源,以及修改apt软件源的方法。
在做分布式系统实验时,一般会有多个master和node节点,在实验期间,我们希望这些机器的IP可以保持固定。那么就需要我们将Ubuntu的IP地址分配方式由DHCP改为静态IP。本文记录设置网卡静态IP的方法。
syslog被系统和第三方软件用来记录各种消息和提醒,该日志可供我们了解系统内核的运行情况,以及定位错误等。但新安装的Ubuntu 22.04上发现/var/log目录下没有常见的messages文件,本文记录解决该问题的思路和方法。
IPv6很香,但当前的普及情况下,不是说一定不会给我们的使用和开发带来问题。我现在正基于Ubuntu开发调试TCP/IP协议栈,发现Ubuntu会默认给每块网卡配置一个IPv6的地址,有了IPv6地址之后,相应的协议数据就会发给这个网卡,导致数据混乱,不利于开发。所以为了开发的便捷,先将IPv6机制禁止掉。
安装操作系统时,我们可以选择我们中国对应时区“Asia/Shanghai”,但如果选择了默认时区“Etc/UTC”,后续显示的时间肯定与我们本土时间对应不上,所以需要我们再次设置时区。
修改时区的步骤:
有时我们明明已经设置了环境变量,但使用sudo执行程序,程序却无法正常获得环境变量的值。究其原因,使用sudo,系统会重置环境变量,亦即,先前设置的变量都会失效,只有少数配置文件中指定的环境变量能够保存下来。
接下来,我们先演示下这种情况的现象,然后再说解决方法。
本文记录sudo的使用教程。
| 书名 | ISBN | 作者 | 出版社 | 出版日期 | 备注 | 
|---|---|---|---|---|---|
| 中国汉传佛教建筑史——佛寺的建造、分布与寺院格局、建筑类型及其变迁 | 9787302427056 | 王贵祥 | 复旦大学出版社 | 2016年05月 | W | 
| 中国古代寺庙与道观建筑 | 9787520818261 | 王俊 | 中国商业出版社 | 2022年01月 | W | 
https://baijiahao.baidu.com/s?id=1629210852176950079&wfr=spider&for=pc
https://baike.baidu.com/tashuo/browse/content?id=e1f2a8e89596564ecabbffca
https://www.nbgjz.com/15.html
https://www.163.com/dy/article/GTFOPNIE0521JF6I.html
https://www.sohu.com/a/114462848_433022
https://www.sohu.com/a/197159569_233501
| 书名 | ISBN | 作者 | 出版社 | 出版日期 | 备注 | 
|---|---|---|---|---|---|
| 中国古代神话 | 9787567549234 | 袁珂 | 华东师范大学出版社 | 2017年01月 | 
| 书名 | ISBN | 作者 | 出版社 | 出版日期 | 备注 | 
|---|---|---|---|---|---|
| 中国道教发展史略 | 9787309116045 | 南怀瑾 | 复旦大学出版社 | 2016年04月 | W | 
| 道德经 | 9787101151596 | 老子 | 中华书局 | 2021年05月 | WB | 
| 道教大辞典 | 9787532650569 | 吉宏忠 | 上海辞书出版社 | 2020年10月 | |
| 中国道教神仙谱系史(第一卷) | 9787569039276 | 李远囯 | 四川大学出版社 | 2022年10月 | |
| 中国道教神仙谱系史(第二卷) | 9787569039283 | 李远囯 | 四川大学出版社 | 2022年10月 | |
| 中国道教神仙谱系史(第三卷) | 9787569039191 | 李远囯/李黎鹤 | 四川大学出版社 | 2022年10月 | |
| 中国道教神仙谱系史(第四卷) | 9787569039290 | 李远囯/李黎鹤 | 四川大学出版社 | 2022年10月 | 
市面上历史类图书汗牛充栋,浩如烟海,但也泥沙俱下,本文记录我精心筛选的历史类图书,也是自己的阅读计划。