怎样将 VMware 16 自带的 gtkmm 替换成系统的库?

Kvm、VMware、Virtualbox、Xen、Qemu 等
回复
offline
帖子: 42
注册时间: 2012-02-06 11:26

怎样将 VMware 16 自带的 gtkmm 替换成系统的库?

#1

帖子 offline » 2023-06-22 7:30

  我用的是 VMware Workstation 16.2.5, 试图将它自带的大量库替换成系统里的库。其他都成功,唯独 GtkMM 替换不了。一旦替换掉,就运行不起来,从日志可以看到缺少某些符号。根据以往的经验,这种现象一般是 gcc/g++ 的 ABI 问题。然后试着用 g++ 自己编译 GtkMM, 通过添加选项 -D_GLIBCXX_USE_CXX11_ABI=0 以及调整 -fabi-version= 来改变 ABI. 但最终都没成功替换,可能没有设对选项参数。

  哪位有过这种经验,知道该如何调整 g++ 的选项来编译 VMware Workstation 16.2.5 所需的 GtkMM? 或者如果你无须自己编译,安装上系统的 GtkMM, 并且删除 VMware 自带的 GtkMM/PangoMM/AtkMM/CairoMM/GLibMM, 让它自动用上系统的库。如果这时能够成功打开 VMware Workstation 16.2.5 的界面,麻烦将你的发行版告诉我,让我研究一下。
头像
dwl301
帖子: 1130
注册时间: 2007-04-14 11:17

Re: 怎样将 VMware 16 自带的 gtkmm 替换成系统的库?

#2

帖子 dwl301 » 2023-06-25 11:52

为啥要替换?都是直接使用官方提供的最新的二进制安装包。。
Gigabyte Aero 15
Intel Core i7-7700HQ
NVIDIA GeForce GTX 1060 (DISABLED)
2x8GB DDR4 2400MHz
M.2 NVME 2280 512G
M.2 NVME 2280 1024G
15.6" FHD 1920×1080
EdwardMatthew
帖子: 10
注册时间: 2023-06-14 22:04
系统: microsoft

Re: 怎样将 VMware 16 自带的 gtkmm 替换成系统的库?

#3

帖子 EdwardMatthew » 2023-07-03 17:02

One possible solution is to compile GtkMM from source using g++ with the options -D_GLIBCXX_USE_CXX11_ABI=0 and -fabi-version=7. Another option is to install the system's GtkMM and remove VMware's GtkMM/PangoMM/AtkMM/CairoMM/GLibMM libraries, ensuring compatibility.
offline
帖子: 42
注册时间: 2012-02-06 11:26

Re: 怎样将 VMware 16 自带的 gtkmm 替换成系统的库?

#4

帖子 offline » 2023-08-24 16:03

EdwardMatthew 写了: 2023-07-03 17:02 One possible solution is to compile GtkMM from source using g++ with the options -D_GLIBCXX_USE_CXX11_ABI=0 and -fabi-version=7. Another option is to install the system's GtkMM and remove VMware's GtkMM/PangoMM/AtkMM/CairoMM/GLibMM libraries, ensuring compatibility.





我按照您给出的参数 -D_GLIBCXX_USE_CXX11_ABI=0 -fabi-version=7 用 g++ 编译试过,无效。

libvmwareui.so 需要的两个符号 _ZNK4Glib10ObjectBase4gobjEv, _ZN4Glib10ObjectBase4gobjEv 分别来自它自带的 libglibmm-2.4.so.1 和 libatkmm-1.6.so.1

但如果自己去编译 glibmm 和 atkmm, 就编译不出那两个符号。

当然那两个符号只是来用举例,实际上远远不止两个。


是否跟具体的 GCC 版本有关?请问您用的是什么版本的 GCC? 编译出来的 libglibmm-2.4.so.1 用 strings 命令能否提取出 _ZNK4Glib10ObjectBase4gobjEv ?
回复