@dyk
2016-01-26T02:28:05.000000Z
字数 36944
阅读 326
Linux Workspace
这个对于理解stubdom工程有帮助,需要仔细阅读
Makefile 自动构建 https://www.ibm.com/developerworks/cn/linux/l-makefile/
Makefile 基础语法 http://bbs.csdn.net/topics/90011878
为了进一步将自己编译的软件作为stubdom和mini-os编译起来,需要深入的了解stubdom makefile文件。
首先重需要前期编译进去的库入手
这些库编译好之后都将存放于stubdom/cross-root-x86_64/x86_64-xen-elf/lib/中。
下面的例子是将额外的依赖库进行下载以及打上相应的补丁,创建相应的文件夹,进行编译
## TPMEMU_STAMPFILE=stubdom/cross-root-x86_64/x86_64-xen-elf/lib/libtpm.a############## cross-tpmemu#############tpm_emulator-$(TPMEMU_VERSION).tar.gz:$(FETCHER) $@ $(TPMEMU_URL)/$@tpm_emulator-$(XEN_TARGET_ARCH): tpm_emulator-$(TPMEMU_VERSION).tar.gz@if [ ! -f "$(CMAKE)" ]; then echo "cmake not installed! Install it and then rerun ./configure!"; false; fitar xzf $<mv tpm_emulator-$(TPMEMU_VERSION) $@## 下面的部分是进行打补丁,为了让这些库适合mini-os的环境patch -d $@ -p1 < tpmemu-$(TPMEMU_VERSION).patch;patch -d $@ -p1 < vtpm-bufsize.patchpatch -d $@ -p1 < vtpm-locality.patchpatch -d $@ -p1 < vtpm-parent-sign-ek.patchpatch -d $@ -p1 < vtpm-deepquote.patchpatch -d $@ -p1 < vtpm-deepquote-anyloc.patchpatch -d $@ -p1 < vtpm-cmake-Wextra.patchmkdir $@/buildcd $@/build; CC=${CC} $(CMAKE) .. -DCMAKE_C_FLAGS:STRING="-std=c99 -DTPM_NO_EXTERN $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -Wno-declaration-after-statement"touch $@TPMEMU_STAMPFILE=$(CROSS_ROOT)/$(GNU_TARGET_ARCH)-xen-elf/lib/libtpm.a$(TPMEMU_STAMPFILE): tpm_emulator-$(XEN_TARGET_ARCH) $(GMP_STAMPFILE)( cd $</build && make VERBOSE=1 tpm_crypto tpm )cp $</build/crypto/libtpm_crypto.a $(CROSS_ROOT)/$(GNU_TARGET_ARCH)-xen-elf/lib/libtpm_crypto.acp $</build/tpm/libtpm.a $(TPMEMU_STAMPFILE).PHONY: cross-tpmemucross-tpmemu: $(TPMEMU_STAMPFILE)
编译完若干这个依赖库之后进行了Links操作,连接操作主要xen在其他地方的文件连接过来,主要文件如下:
将主要的头文件放入当前文件夹的include/下
mk-headers-$(XEN_TARGET_ARCH): $(IOEMU_LINKFARM_TARGET)mkdir -p include/xen && \ln -sf $(wildcard $(XEN_ROOT)/xen/include/public/*.h) include/xen && \ln -sf $(addprefix $(XEN_ROOT)/xen/include/public/,arch-x86 hvm io xsm) include/xen && \( [ -h include/xen/sys ] || ln -sf $(XEN_ROOT)/tools/include/xen-sys/MiniOS include/xen/sys ) && \( [ -h include/xen/libelf ] || ln -sf $(XEN_ROOT)/tools/include/xen/libelf include/xen/libelf ) && \mkdir -p include/xen-foreign && \ln -sf $(wildcard $(XEN_ROOT)/tools/include/xen-foreign/*) include/xen-foreign/ && \$(MAKE) DESTDIR= -C include/xen-foreign/ && \( [ -h include/xen/foreign ] || ln -sf ../xen-foreign include/xen/foreign )mkdir -p libxc-$(XEN_TARGET_ARCH)[ -h libxc-$(XEN_TARGET_ARCH)/Makefile ] || ( cd libxc-$(XEN_TARGET_ARCH) && \ln -sf $(XEN_ROOT)/tools/libxc/*.h . && \ln -sf $(XEN_ROOT)/tools/libxc/include/*.h . && \ln -sf $(XEN_ROOT)/tools/libxc/*.c . && \ln -sf $(XEN_ROOT)/tools/libxc/Makefile . )mkdir -p xenstore[ -h xenstore/Makefile ] || ( cd xenstore && \ln -sf $(XEN_ROOT)/tools/xenstore/*.c . && \ln -sf $(XEN_ROOT)/tools/xenstore/*.h . && \ln -sf $(XEN_ROOT)/tools/xenstore/include/*.h . && \ln -sf $(XEN_ROOT)/tools/xenstore/Makefile . )$(MAKE) DESTDIR= -C $(MINI_OS) linkstouch mk-headers-$(XEN_TARGET_ARCH)
编译目标文件,这一步将会生成stubdomain的主要程序:
#### C###.PHONY: cc: $(CROSS_ROOT)CPPFLAGS="$(TARGET_CPPFLAGS)" CFLAGS="$(TARGET_CFLAGS)" $(MAKE) DESTDIR= -C $@ LWIPDIR=$(CURDIR)/lwip-$(XEN_TARGET_ARCH)####### VTPM######.PHONY: vtpmvtpm: cross-polarssl cross-tpmemumake -C $(MINI_OS) linksXEN_TARGET_ARCH="$(XEN_TARGET_ARCH)" CPPFLAGS="$(TARGET_CPPFLAGS)" CFLAGS="$(TARGET_CFLAGS)" $(MAKE) -C $@####### VTPMMGR######.PHONY: vtpmmgrvtpmmgr: cross-polarsslmake -C $(MINI_OS) linksXEN_TARGET_ARCH="$(XEN_TARGET_ARCH)" CPPFLAGS="$(TARGET_CPPFLAGS)" CFLAGS="$(TARGET_CFLAGS)" $(MAKE) -C $@####### Grub######## target : methond 用method的方法来生成target,这里的target是从网上下载的grub-$(GRUB_VERSION).tar.gz:$(FETCHER) $@ $(GRUB_URL)/$@## 下面将下载的压缩包卸载,并且将grub.patches里面的diff文件进行打补丁grub-upstream: grub-$(GRUB_VERSION).tar.gztar xzf $<mv grub-$(GRUB_VERSION) $@for i in grub.patches/* ; do \patch -d $@ -p1 < $$i || exit 1; \done## 下面的规则将会生成grub.PHONY: grubgrub: cross-polarssl grub-upstream $(CROSS_ROOT)mkdir -p grub-$(XEN_TARGET_ARCH)CPPFLAGS="$(TARGET_CPPFLAGS)" CFLAGS="$(TARGET_CFLAGS)" $(MAKE) DESTDIR= -C $@ OBJ_DIR=$(CURDIR)/grub-$(XEN_TARGET_ARCH)
编译完毕之后,将会进行mini-os的编译,即将前面生成的各种obj文件与mini-os连接起来进行编译
######### minios########.PHONY: ioemu-stubdomioemu-stubdom: APP_OBJS=$(CURDIR)/ioemu/i386-stubdom/qemu.a $(CURDIR)/ioemu/i386-stubdom/libqemu.a $(CURDIR)/ioemu/libqemu_common.aioemu-stubdom: mini-os-$(XEN_TARGET_ARCH)-ioemu lwip-$(XEN_TARGET_ARCH) libxc ioemuDEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/ioemu-minios.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< LWIPDIR=$(CURDIR)/lwip-$(XEN_TARGET_ARCH) APP_OBJS="$(APP_OBJS)".PHONY: caml-stubdomcaml-stubdom: mini-os-$(XEN_TARGET_ARCH)-caml lwip-$(XEN_TARGET_ARCH) libxc cross-ocaml camlDEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/caml/minios.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< LWIPDIR=$(CURDIR)/lwip-$(XEN_TARGET_ARCH) APP_OBJS="$(CURDIR)/caml/main-caml.o $(CURDIR)/caml/caml.o $(CAMLLIB)/libasmrun.a".PHONY: c-stubdomc-stubdom: mini-os-$(XEN_TARGET_ARCH)-c lwip-$(XEN_TARGET_ARCH) libxc cDEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/c/minios.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< LWIPDIR=$(CURDIR)/lwip-$(XEN_TARGET_ARCH) APP_OBJS=$(CURDIR)/c/main.a.PHONY: vtpm-stubdomvtpm-stubdom: mini-os-$(XEN_TARGET_ARCH)-vtpm vtpmDEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/vtpm/minios.cfg" $(MAKE) -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS="$(CURDIR)/vtpm/vtpm.a" APP_LDLIBS="-ltpm -ltpm_crypto -lgmp -lpolarssl".PHONY: vtpmmgr-stubdomvtpmmgr-stubdom: mini-os-$(XEN_TARGET_ARCH)-vtpmmgr vtpmmgrDEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/vtpmmgr/minios.cfg" $(MAKE) -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS="$(CURDIR)/vtpmmgr/vtpmmgr.a" APP_LDLIBS="-lm -lpolarssl".PHONY: pv-grubpv-grub: mini-os-$(XEN_TARGET_ARCH)-grub libxc grubDEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/grub/minios.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS=$(CURDIR)/grub-$(XEN_TARGET_ARCH)/main.a.PHONY: xenstore-stubdomxenstore-stubdom: mini-os-$(XEN_TARGET_ARCH)-xenstore libxc xenstoreDEF_CPPFLAGS="$(TARGET_CPPFLAGS)" DEF_CFLAGS="$(TARGET_CFLAGS)" DEF_LDFLAGS="$(TARGET_LDFLAGS)" MINIOS_CONFIG="$(CURDIR)/xenstore-minios.cfg" $(MAKE) DESTDIR= -C $(MINI_OS) OBJ_DIR=$(CURDIR)/$< APP_OBJS=$(CURDIR)/xenstore/xenstored.a
经历了(1)下载依赖库,(2)将需要的include文件链接到include目录下,(3)编译stubdom中运行的主要程序(生成.o文件),(4)将其与mini-os链接起来,4个主要步骤完成stubdom的编译工作。
初步的想法是将VMI中的Example程序process-list通过编译的方式与mini-os进行编译,首先需要将libvmi的依赖的库进行相关编译。
之前的几个库都进行了交叉编译libvmi是否需要?
解答:新的libvmi的库需要进行编译否者将会提示
ld: warning: section `.bss' type changed to PROGBITS/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `main':/usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:58: undefined reference to `vmi_init'/usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:64: undefined reference to `vmi_get_ostype'/usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:69: undefined reference to `vmi_get_ostype'/usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:170: undefined reference to `vmi_resume_vm'/usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:173: undefined reference to `vmi_destroy'/usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:65: undefined reference to `vmi_get_offset'/usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:66: undefined reference to `vmi_get_offset'/usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:67: undefined reference to `vmi_get_offset'/usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:89: undefined reference to `vmi_pause_vm'/usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:95: undefined reference to `vmi_get_name'/usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:97: undefined reference to `vmi_get_access_mode'/usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:98: undefined reference to `vmi_get_vmid'/usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:108: undefined reference to `vmi_get_ostype'/usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:115: undefined reference to `vmi_get_ostype'/usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:160: undefined reference to `vmi_read_addr_va'/usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:142: undefined reference to `vmi_read_32_va'/usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:144: undefined reference to `vmi_read_str_va'/usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:70: undefined reference to `vmi_get_offset'/usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:71: undefined reference to `vmi_get_offset'/usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:72: undefined reference to `vmi_get_offset'/usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:113: undefined reference to `vmi_translate_ksym2v'/usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:118: undefined reference to `vmi_read_addr_ksym'make[1]: *** [/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os] Error 1ld: warning: section `.bss' type changed to PROGBITS/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_get_address_width':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/accessors.c:49: undefined reference to `driver_get_address_width'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_get_winver':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/accessors.c:78: undefined reference to `find_windows_version'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_get_offset':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/accessors.c:139: undefined reference to `find_pname_offset'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_get_name':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/accessors.c:224: undefined reference to `driver_get_name'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_get_vmid':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/accessors.c:237: undefined reference to `driver_get_id'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_get_name':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/accessors.c:224: undefined reference to `driver_get_name'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_get_vmid':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/accessors.c:239: undefined reference to `driver_get_id_from_name'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_get_winver_manual':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/accessors.c:117: undefined reference to `find_windows_version'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_get_vcpureg':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/accessors.c:190: undefined reference to `driver_get_vcpureg'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_set_vcpureg':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/accessors.c:200: undefined reference to `driver_set_vcpureg'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_pause_vm':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/accessors.c:207: undefined reference to `driver_pause_vm'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_resume_vm':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/accessors.c:214: undefined reference to `driver_resume_vm'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `errprint':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/convenience.c:57: undefined reference to `stderr'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/convenience.c:59: undefined reference to `stderr'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `warnprint':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/convenience.c:71: undefined reference to `stderr'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/convenience.c:73: undefined reference to `stderr'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `read_config_ghashtable_entries':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:234: undefined reference to `__strdup'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `read_config_file':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:93: undefined reference to `yyin'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:96: undefined reference to `yyin'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:108: undefined reference to `vmi_parse_config'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:213: undefined reference to `yyin'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:113: undefined reference to `vmi_get_config'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:116: undefined reference to `__strdup'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:100: undefined reference to `yyin'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:102: undefined reference to `stderr'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:100: undefined reference to `yyin'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `read_config_ghashtable':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:322: undefined reference to `g_hash_table_foreach'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `get_memory_layout':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:382: undefined reference to `driver_get_vcpureg'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:397: undefined reference to `driver_get_vcpureg'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:402: undefined reference to `driver_get_vcpureg'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:415: undefined reference to `driver_get_vcpureg'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:457: undefined reference to `driver_is_pv'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:424: undefined reference to `driver_get_address_width'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `set_id_and_name':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:566: undefined reference to `driver_get_id_from_name'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:568: undefined reference to `driver_set_id'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:605: undefined reference to `__strndup'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:606: undefined reference to `driver_set_name'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_init_private':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:662: undefined reference to `driver_init'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:695: undefined reference to `driver_get_memsize'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `set_image_type_for_file':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:541: undefined reference to `__strndup'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:542: undefined reference to `__strndup'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `set_id_and_name':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:555: undefined reference to `driver_set_name'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_init_private':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:744: undefined reference to `driver_get_memsize'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `set_driver_type':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:515: undefined reference to `driver_init_mode'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `set_id_and_name':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:585: undefined reference to `driver_check_id'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:590: undefined reference to `driver_set_id'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:592: undefined reference to `driver_get_name_from_id'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_init_private':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:730: undefined reference to `linux_init'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:733: undefined reference to `windows_init'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `find_cr3':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:339: undefined reference to `windows_find_cr3'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_init_custom':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:806: undefined reference to `__strdup'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:818: undefined reference to `g_hash_table_lookup'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:820: undefined reference to `g_hash_table_lookup_extended'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:803: undefined reference to `__strdup'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_destroy':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:904: undefined reference to `driver_destroy'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:909: undefined reference to `memory_cache_destroy'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_init_complete':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:858: undefined reference to `__strdup'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:855: undefined reference to `__strdup'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `events_init':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:99: undefined reference to `g_int64_equal'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:99: undefined reference to `g_int64_hash'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:99: undefined reference to `g_hash_table_new_full'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:101: undefined reference to `g_int_equal'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:101: undefined reference to `g_int_hash'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:101: undefined reference to `g_hash_table_new'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:102: undefined reference to `g_free'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:102: undefined reference to `g_int_equal'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:102: undefined reference to `g_int_hash'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:102: undefined reference to `g_hash_table_new_full'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `events_destroy':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:115: undefined reference to `g_hash_table_foreach_remove'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:116: undefined reference to `g_hash_table_destroy'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:121: undefined reference to `g_hash_table_foreach_steal'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:122: undefined reference to `g_hash_table_destroy'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:127: undefined reference to `g_hash_table_foreach_remove'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `register_reg_event':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:138: undefined reference to `g_hash_table_lookup'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:143: undefined reference to `driver_set_reg_access'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:145: undefined reference to `g_hash_table_insert'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `register_mem_event':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:163: undefined reference to `g_hash_table_lookup'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:195: undefined reference to `g_hash_table_lookup'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:205: undefined reference to `driver_set_mem_access'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:209: undefined reference to `g_hash_table_insert'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:181: undefined reference to `driver_set_mem_access'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:234: undefined reference to `driver_set_mem_access'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:238: undefined reference to `g_malloc0'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:257: undefined reference to `g_hash_table_insert'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:218: undefined reference to `driver_set_mem_access'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:221: undefined reference to `g_int64_equal'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:221: undefined reference to `g_int64_hash'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:221: undefined reference to `g_hash_table_new'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:224: undefined reference to `g_hash_table_insert'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:249: undefined reference to `g_int64_equal'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:249: undefined reference to `g_int64_hash'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:249: undefined reference to `g_hash_table_new'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:250: undefined reference to `g_hash_table_insert'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `register_singlestep_event':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:276: undefined reference to `g_hash_table_lookup'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:284: undefined reference to `driver_start_single_step'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:288: undefined reference to `g_hash_table_insert'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `clear_reg_event':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:305: undefined reference to `g_hash_table_lookup'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:310: undefined reference to `driver_set_reg_access'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:315: undefined reference to `g_hash_table_remove'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `clear_mem_event':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:334: undefined reference to `g_hash_table_lookup'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:394: undefined reference to `g_hash_table_lookup'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:406: undefined reference to `g_hash_table_steal'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:416: undefined reference to `g_hash_table_size'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:429: undefined reference to `driver_set_mem_access'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:437: undefined reference to `g_hash_table_size'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:361: undefined reference to `g_hash_table_iter_init'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:361: undefined reference to `g_hash_table_iter_next'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:368: undefined reference to `driver_set_mem_access'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:453: undefined reference to `g_hash_table_insert'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:421: undefined reference to `g_hash_table_iter_init'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:421: undefined reference to `g_hash_table_iter_next'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:439: undefined reference to `g_hash_table_destroy'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:447: undefined reference to `g_hash_table_remove'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `clear_singlestep_event':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:482: undefined reference to `driver_stop_single_step'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:485: undefined reference to `g_hash_table_remove'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `memevent_page_clean':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:79: undefined reference to `g_hash_table_foreach_steal'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:80: undefined reference to `g_hash_table_destroy'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_get_reg_event':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:498: undefined reference to `g_hash_table_lookup'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_get_mem_event':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:507: undefined reference to `g_hash_table_lookup'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:513: undefined reference to `g_hash_table_lookup'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_get_singlestep_event':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:603: undefined reference to `g_hash_table_lookup'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_stop_single_step_vcpu':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:616: undefined reference to `g_hash_table_remove'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:618: undefined reference to `driver_stop_single_step'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_shutdown_single_step':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:629: undefined reference to `driver_shutdown_single_step'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:636: undefined reference to `g_hash_table_destroy'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:637: undefined reference to `g_free'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:637: undefined reference to `g_int_equal'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:637: undefined reference to `g_int_hash'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:637: undefined reference to `g_hash_table_new_full'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `events_destroy':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:128: undefined reference to `g_hash_table_destroy'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_events_listen':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:598: undefined reference to `driver_events_listen'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_translate_kv2p':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/memory.c:486: undefined reference to `driver_get_vcpureg'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_translate_ksym2v':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/memory.c:550: undefined reference to `linux_system_map_symbol_to_address'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/memory.c:555: undefined reference to `windows_symbol_to_address'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_translate_sym2v':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/memory.c:580: undefined reference to `windows_export_to_rva'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_translate_v2sym':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/memory.c:606: undefined reference to `windows_rva_to_export'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_pid_to_dtb':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/memory.c:624: undefined reference to `linux_pid_to_pgd'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/memory.c:627: undefined reference to `windows_pid_to_pgd'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_dtb_to_pid':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/memory.c:648: undefined reference to `windows_pgd_to_pid'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/memory.c:645: undefined reference to `linux_pgd_to_pid'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_read_page':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/memory.c:661: undefined reference to `driver_read_page'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_convert_str_encoding':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/read.c:546: undefined reference to `iconv_open'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/read.c:561: undefined reference to `iconv'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/read.c:596: undefined reference to `iconv_close'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/read.c:585: undefined reference to `iconv_close'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `sym_cache_entry_create':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:246: undefined reference to `__strdup'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `pid_cache_init':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:144: undefined reference to `g_int_equal'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:144: undefined reference to `g_int_hash'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:144: undefined reference to `g_hash_table_new_full'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `pid_cache_get':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:164: undefined reference to `g_hash_table_lookup'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `pid_cache_del':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:197: undefined reference to `g_hash_table_remove'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `sym_cache_init':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:259: undefined reference to `g_hash_table_destroy'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:259: undefined reference to `g_free'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:259: undefined reference to `g_hash_table_new_full'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `sym_cache_get':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:288: undefined reference to `g_hash_table_lookup'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:292: undefined reference to `g_hash_table_lookup'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `sym_cache_set':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:315: undefined reference to `g_hash_table_lookup'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:316: undefined reference to `g_str_equal'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:316: undefined reference to `g_str_hash'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:316: undefined reference to `g_hash_table_new_full'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:318: undefined reference to `g_hash_table_insert'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `sym_cache_del':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:340: undefined reference to `g_hash_table_lookup'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:346: undefined reference to `g_hash_table_remove'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:349: undefined reference to `g_hash_table_size'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:350: undefined reference to `g_hash_table_remove'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `rva_cache_init':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:370: undefined reference to `g_hash_table_destroy'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:370: undefined reference to `g_free'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:370: undefined reference to `g_hash_table_new_full'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `rva_cache_get':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:398: undefined reference to `g_hash_table_lookup'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:402: undefined reference to `g_hash_table_lookup'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `rva_cache_set':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:425: undefined reference to `g_hash_table_lookup'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:426: undefined reference to `g_int_equal'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:426: undefined reference to `g_int_hash'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:426: undefined reference to `g_hash_table_new_full'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:428: undefined reference to `g_hash_table_insert'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `rva_cache_del':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:450: undefined reference to `g_hash_table_lookup'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:456: undefined reference to `g_hash_table_remove'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:459: undefined reference to `g_hash_table_size'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:460: undefined reference to `g_hash_table_remove'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `v2p_cache_init':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:496: undefined reference to `g_free'/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:496: undefined reference to `g_hash_table_new_full'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `v2p_cache_get':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:519: undefined reference to `g_hash_table_lookup'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `v2p_cache_del':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:563: undefined reference to `g_hash_table_remove'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `pid_cache_destroy':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:152: undefined reference to `g_hash_table_destroy'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `pid_cache_set':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:185: undefined reference to `g_hash_table_insert'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `pid_cache_flush':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:209: undefined reference to `g_hash_table_remove_all'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `sym_cache_destroy':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:267: undefined reference to `g_hash_table_destroy'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `sym_cache_set':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:323: undefined reference to `g_hash_table_insert'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `sym_cache_flush':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:361: undefined reference to `g_hash_table_remove_all'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `rva_cache_destroy':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:378: undefined reference to `g_hash_table_destroy'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `rva_cache_set':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:433: undefined reference to `g_hash_table_insert'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `rva_cache_flush':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:471: undefined reference to `g_hash_table_remove_all'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `v2p_cache_destroy':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:503: undefined reference to `g_hash_table_destroy'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `v2p_cache_set':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:543: undefined reference to `g_hash_table_insert'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `v2p_cache_flush':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:575: undefined reference to `g_hash_table_remove_all'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `pid_cache_flush':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:209: undefined reference to `g_hash_table_remove_all'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `sym_cache_flush':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:361: undefined reference to `g_hash_table_remove_all'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `rva_cache_flush':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:471: undefined reference to `g_hash_table_remove_all'/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `v2p_cache_flush':/usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:575: undefined reference to `g_hash_table_remove_all'make[1]: *** [/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os] Error 1make[1]: Leaving directory `/usr/src/xen-4.6.0/extras/mini-os'make: *** [libvmi-stubdom] Error 2
发现makefile进行处理的时候将会产生很多的
下一步将会进行添加 Cross-libvmi的过程。
这些问题不仅需要编译的时候加入静态库,并且需要在include里添加头文件。
目前的问题都能够将程序进行静态编译之后与mini-os进行链接。完成stubdom的搭建。
阅读libvmi的README.rst,需要的依赖库为:
在编译的过程中,限制了编译器查找头文件以及连接器查找库文件的位置。