背景

当前的工作与SVN有关,今天使用SVN库编写了一个小程序,编译代码时发现编译器告警:”warning: ‘svn_client_ls2’ is deprecated (declared at /home/svn/apps/svn/include/subversion-1/svn_client.h:4942)”。

1
2
3
4
5
6
7
svn@linux-rwdx:~/objs/motadou> make
g++ webdav.cpp -o webdav -I/home/svn/apps/svn/include/subversion-1 -I/home/svn/apps/neon/include/neon -I/home/svn/apps/apr-util/include/apr-1 -I/home/svn/apps/apr/include/apr-1 -I/home/svn/apps/sqlite/include -I/home/svn/apps/ssl/include/openssl\
-L/home/svn/apps/svn/lib -lsvn_client-1 -lsvn_wc-1 -lsvn_fs-1 -lsvn_fs_fs-1 -lsvn_fs_util-1 -lsvn_ra-1 -lsvn_ra_neon-1 -lsvn_ra_local-1 -lsvn_repos-1 -lsvn_delta-1 -lsvn_diff-1 -lsvn_subr-1 -L/home/svn/apps/neon/lib -lneon -L/home/svn/apps/apr-util/lib -laprutil-1 -L/home/svn/apps/apr/lib -lapr-1 -pthread /home/svn/apps/sqlite/lib/libsqlite3.a -L/home/svn/apps/ssl/lib -lssl -lcrypto -lz

webdav.cpp: In function 'int svn_list(Handle&, const std::string&)':
webdav.cpp:120: warning: 'svn_client_ls2' is deprecated (declared at /home/svn/apps/svn/include/subversion-1/svn_client.h:4942)
webdav.cpp:120: warning: 'svn_client_ls2' is deprecated (declared at /home/svn/apps/svn/include/subversion-1/svn_client.h:4942)
阅读全文 »

背景

相比于静态链接库,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的其他介质启动,所以就不方便使用当前已创建的虚拟磁盘,来重新安装操作系统。本文记录如何利用已创建的磁盘来重装系统。

阅读全文 »

我在Github上有多个账号:

  • motadou账号,是主力账号,主要用于fork比较重要的仓库,用于自己存档,该仓库比较杂乱。
  • pagepaper账号,是博客账号,主要用于博文撰写以及gitbook总结性文章,是自己写作的主要基地。
  • mancodenet账号,是代码账号,主要用于存放自己的开源代码,以简练为主。

按照平时的使用习惯,每个账号我都会设置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
阅读全文 »

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的方法。

阅读全文 »

IPv6很香,但当前的普及情况下,不是说一定不会给我们的使用和开发带来问题。我现在正基于Ubuntu开发调试TCP/IP协议栈,发现Ubuntu会默认给每块网卡配置一个IPv6的地址,有了IPv6地址之后,相应的协议数据就会发给这个网卡,导致数据混乱,不利于开发。所以为了开发的便捷,先将IPv6机制禁止掉。

阅读全文 »

安装操作系统时,我们可以选择我们中国对应时区“Asia/Shanghai”,但如果选择了默认时区“Etc/UTC”,后续显示的时间肯定与我们本土时间对应不上,所以需要我们再次设置时区。

修改时区的步骤:

  • 第一步,查看系统中有哪些可用时区,如中国时区选择“Asia/Shanghai”。
  • 第二步,选择好时区之后,我们使用系统提供的命令来设置时区。
阅读全文 »

有时我们明明已经设置了环境变量,但使用sudo执行程序,程序却无法正常获得环境变量的值。究其原因,使用sudo,系统会重置环境变量,亦即,先前设置的变量都会失效,只有少数配置文件中指定的环境变量能够保存下来。

接下来,我们先演示下这种情况的现象,然后再说解决方法。

阅读全文 »

0x01 参考图书

书名 ISBN 作者 出版社 出版日期 备注
中国汉传佛教建筑史——佛寺的建造、分布与寺院格局、建筑类型及其变迁 9787302427056 王贵祥 复旦大学出版社 2016年05月 W
中国古代寺庙与道观建筑 9787520818261 王俊 中国商业出版社 2022年01月 W

0x02 参考资料

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 作者 出版社 出版日期 备注
中国道教发展史略 9787309116045 南怀瑾 复旦大学出版社 2016年04月 W
道德经 9787101151596 老子 中华书局 2021年05月 WB
道教大辞典 9787532650569 吉宏忠 上海辞书出版社 2020年10月
中国道教神仙谱系史(第一卷) 9787569039276 李远囯 四川大学出版社 2022年10月
中国道教神仙谱系史(第二卷) 9787569039283 李远囯 四川大学出版社 2022年10月
中国道教神仙谱系史(第三卷) 9787569039191 李远囯/李黎鹤 四川大学出版社 2022年10月
中国道教神仙谱系史(第四卷) 9787569039290 李远囯/李黎鹤 四川大学出版社 2022年10月

市面上历史类图书汗牛充栋,浩如烟海,但也泥沙俱下,本文记录我精心筛选的历史类图书,也是自己的阅读计划。

阅读全文 »