MacOS制作启动盘
Manjaro 21.05 安装和配置
ArchLinux官网:https://archlinux.org/
- 学习环境配置:Manjaro、MSYS2以及常见软件
- 最受欢迎的Linux发行版, Manjaro折腾全记录(超长超详细)
- manjaro最新搜狗输入法安装教程
- Linux(Manjaro) -Docker 安装及基本配置
Ubuntu 18.04 安装和配置
源码阅读利器:UnderStand安装与踩坑
1)Understand用法及Linux安装指南
2)Understand在Manjaro上运行报错的解决
根据上述的Understand官网上的Linux安装指南,在Ubuntu 20.04上可以正常运行,但在Manjaro 21.05上出现如下错误:
在./understand
时报错:
./understand: symbol lookup error: /usr/lib/libfontconfig.so.1: undefined symbol: FT_Done_MM_Var
为此我作出以下调研和尝试:
- 其他软件的相似问题和解决方式:
- Linux使用动态库时的undefined symbol问题:
- LinuxQuestions上的相似问题:
从这些链接中我学到Linux使用动态库时需注意的问题和很多有用的Linux命令(如ldd
、nm
、grep
等),同时也发现自己对make的过程,Makefile的编写等还不熟悉,希望后面将这块知识补上。
在调试的过程中我尝试了上述链接中的方法,但manjaro的/usr/lib/
中 libfreetype.so
和libfontconfig.so
都存在,/usr/lib/libfontconfig.so
依赖于/usr/liblib/freetype.so
,且FT_Done_MM_Var
也在libfreetype.so
中定义了。而Understand的源码和makefile文件无法找到,因此不能通过修改编译过程解决。已知Understand在Ubuntu 18.04上可以正常运行,而Manjaro 21.05与Ubuntu的唯一区别在于Manjaro的Linux系统版本是5.10,而Ubuntu的系统版本是5.8,两系统中libfontconfig
的版本一致(都是libfontconfig.so.1.12.0
,而libfreetype
的版本不同(Manjaro是libfreetype.so.6.17.4
,Ubuntu是libfreetype.so.6.17.1
),因此可能的问题应该与第一个链接(Tecplot运行报错)相似,需要降低Linux系统版本。
Manjaro换内核的帖子(链接),尝试无果。
最后,将understand安装目录中/bin/linux64
下的 libfreetype.so.6
删除,运行成功!
反向思考错误原因,应该是/bin/linux/libfreetype.so
版本低,没有定义FT_Done_MM_Var,使用/bin/linux/libfreetype.so
时会加载系统的/usr/lib/libfontconfig.so.1
动态库。该动态库依赖的是版本较高的/usr/lib/libfreetype.so
,而后者因为相同的库已存在所以没有加载,至此问题解决。
Linux命令学习与积累
- Linux df 命令
- Linux locate命令
- [[SOLVED]Locate command not found](https://bbs.archlinux.org/viewtopic.php?id=99084)
- Linux grep 命令
- Linux下nm和ldd命令
Kommentare
shortname
for Disqus. Please set it in_config.yml
.