[关闭]
@dyk 2016-01-26T02:28:05.000000Z 字数 36944 阅读 326

Autoconf Linux 自动编译工具 与 Xen Stubdom Makefile

Linux Workspace


2016-01-06 autotools 编译工具

这个对于理解stubdom工程有帮助,需要仔细阅读
Makefile 自动构建 https://www.ibm.com/developerworks/cn/linux/l-makefile/
Makefile 基础语法 http://bbs.csdn.net/topics/90011878

2016-01-11 Stubdom 工程阅读

Makefile阅读

为了进一步将自己编译的软件作为stubdom和mini-os编译起来,需要深入的了解stubdom makefile文件。

首先重需要前期编译进去的库入手
这些库编译好之后都将存放于stubdom/cross-root-x86_64/x86_64-xen-elf/lib/中。

下面的例子是将额外的依赖库进行下载以及打上相应的补丁,创建相应的文件夹,进行编译

  1. ## TPMEMU_STAMPFILE=stubdom/cross-root-x86_64/x86_64-xen-elf/lib/libtpm.a
  2. #############
  3. # cross-tpmemu
  4. #############
  5. tpm_emulator-$(TPMEMU_VERSION).tar.gz:
  6. $(FETCHER) $@ $(TPMEMU_URL)/$@
  7. tpm_emulator-$(XEN_TARGET_ARCH): tpm_emulator-$(TPMEMU_VERSION).tar.gz
  8. @if [ ! -f "$(CMAKE)" ]; then echo "cmake not installed! Install it and then rerun ./configure!"; false; fi
  9. tar xzf $<
  10. mv tpm_emulator-$(TPMEMU_VERSION) $@
  11. ## 下面的部分是进行打补丁,为了让这些库适合mini-os的环境
  12. patch -d $@ -p1 < tpmemu-$(TPMEMU_VERSION).patch;
  13. patch -d $@ -p1 < vtpm-bufsize.patch
  14. patch -d $@ -p1 < vtpm-locality.patch
  15. patch -d $@ -p1 < vtpm-parent-sign-ek.patch
  16. patch -d $@ -p1 < vtpm-deepquote.patch
  17. patch -d $@ -p1 < vtpm-deepquote-anyloc.patch
  18. patch -d $@ -p1 < vtpm-cmake-Wextra.patch
  19. mkdir $@/build
  20. cd $@/build; CC=${CC} $(CMAKE) .. -DCMAKE_C_FLAGS:STRING="-std=c99 -DTPM_NO_EXTERN $(TARGET_CPPFLAGS) $(TARGET_CFLAGS) -Wno-declaration-after-statement"
  21. touch $@
  22. TPMEMU_STAMPFILE=$(CROSS_ROOT)/$(GNU_TARGET_ARCH)-xen-elf/lib/libtpm.a
  23. $(TPMEMU_STAMPFILE): tpm_emulator-$(XEN_TARGET_ARCH) $(GMP_STAMPFILE)
  24. ( cd $</build && make VERBOSE=1 tpm_crypto tpm )
  25. cp $</build/crypto/libtpm_crypto.a $(CROSS_ROOT)/$(GNU_TARGET_ARCH)-xen-elf/lib/libtpm_crypto.a
  26. cp $</build/tpm/libtpm.a $(TPMEMU_STAMPFILE)
  27. .PHONY: cross-tpmemu
  28. cross-tpmemu: $(TPMEMU_STAMPFILE)

编译完若干这个依赖库之后进行了Links操作,连接操作主要xen在其他地方的文件连接过来,主要文件如下:
将主要的头文件放入当前文件夹的include/下

  1. mk-headers-$(XEN_TARGET_ARCH): $(IOEMU_LINKFARM_TARGET)
  2. mkdir -p include/xen && \
  3. ln -sf $(wildcard $(XEN_ROOT)/xen/include/public/*.h) include/xen && \
  4. ln -sf $(addprefix $(XEN_ROOT)/xen/include/public/,arch-x86 hvm io xsm) include/xen && \
  5. ( [ -h include/xen/sys ] || ln -sf $(XEN_ROOT)/tools/include/xen-sys/MiniOS include/xen/sys ) && \
  6. ( [ -h include/xen/libelf ] || ln -sf $(XEN_ROOT)/tools/include/xen/libelf include/xen/libelf ) && \
  7. mkdir -p include/xen-foreign && \
  8. ln -sf $(wildcard $(XEN_ROOT)/tools/include/xen-foreign/*) include/xen-foreign/ && \
  9. $(MAKE) DESTDIR= -C include/xen-foreign/ && \
  10. ( [ -h include/xen/foreign ] || ln -sf ../xen-foreign include/xen/foreign )
  11. mkdir -p libxc-$(XEN_TARGET_ARCH)
  12. [ -h libxc-$(XEN_TARGET_ARCH)/Makefile ] || ( cd libxc-$(XEN_TARGET_ARCH) && \
  13. ln -sf $(XEN_ROOT)/tools/libxc/*.h . && \
  14. ln -sf $(XEN_ROOT)/tools/libxc/include/*.h . && \
  15. ln -sf $(XEN_ROOT)/tools/libxc/*.c . && \
  16. ln -sf $(XEN_ROOT)/tools/libxc/Makefile . )
  17. mkdir -p xenstore
  18. [ -h xenstore/Makefile ] || ( cd xenstore && \
  19. ln -sf $(XEN_ROOT)/tools/xenstore/*.c . && \
  20. ln -sf $(XEN_ROOT)/tools/xenstore/*.h . && \
  21. ln -sf $(XEN_ROOT)/tools/xenstore/include/*.h . && \
  22. ln -sf $(XEN_ROOT)/tools/xenstore/Makefile . )
  23. $(MAKE) DESTDIR= -C $(MINI_OS) links
  24. touch mk-headers-$(XEN_TARGET_ARCH)

编译目标文件,这一步将会生成stubdomain的主要程序:

  1. ###
  2. # C
  3. ###
  4. .PHONY: c
  5. c: $(CROSS_ROOT)
  6. CPPFLAGS="$(TARGET_CPPFLAGS)" CFLAGS="$(TARGET_CFLAGS)" $(MAKE) DESTDIR= -C $@ LWIPDIR=$(CURDIR)/lwip-$(XEN_TARGET_ARCH)
  7. ######
  8. # VTPM
  9. ######
  10. .PHONY: vtpm
  11. vtpm: cross-polarssl cross-tpmemu
  12. make -C $(MINI_OS) links
  13. XEN_TARGET_ARCH="$(XEN_TARGET_ARCH)" CPPFLAGS="$(TARGET_CPPFLAGS)" CFLAGS="$(TARGET_CFLAGS)" $(MAKE) -C $@
  14. ######
  15. # VTPMMGR
  16. ######
  17. .PHONY: vtpmmgr
  18. vtpmmgr: cross-polarssl
  19. make -C $(MINI_OS) links
  20. XEN_TARGET_ARCH="$(XEN_TARGET_ARCH)" CPPFLAGS="$(TARGET_CPPFLAGS)" CFLAGS="$(TARGET_CFLAGS)" $(MAKE) -C $@
  21. ######
  22. # Grub
  23. ######
  24. ## target : methond 用method的方法来生成target,这里的target是从网上下载的
  25. grub-$(GRUB_VERSION).tar.gz:
  26. $(FETCHER) $@ $(GRUB_URL)/$@
  27. ## 下面将下载的压缩包卸载,并且将grub.patches里面的diff文件进行打补丁
  28. grub-upstream: grub-$(GRUB_VERSION).tar.gz
  29. tar xzf $<
  30. mv grub-$(GRUB_VERSION) $@
  31. for i in grub.patches/* ; do \
  32. patch -d $@ -p1 < $$i || exit 1; \
  33. done
  34. ## 下面的规则将会生成grub
  35. .PHONY: grub
  36. grub: cross-polarssl grub-upstream $(CROSS_ROOT)
  37. mkdir -p grub-$(XEN_TARGET_ARCH)
  38. CPPFLAGS="$(TARGET_CPPFLAGS)" CFLAGS="$(TARGET_CFLAGS)" $(MAKE) DESTDIR= -C $@ OBJ_DIR=$(CURDIR)/grub-$(XEN_TARGET_ARCH)

编译完毕之后,将会进行mini-os的编译,即将前面生成的各种obj文件与mini-os连接起来进行编译

  1. ########
  2. # minios
  3. ########
  4. .PHONY: ioemu-stubdom
  5. ioemu-stubdom: APP_OBJS=$(CURDIR)/ioemu/i386-stubdom/qemu.a $(CURDIR)/ioemu/i386-stubdom/libqemu.a $(CURDIR)/ioemu/libqemu_common.a
  6. ioemu-stubdom: mini-os-$(XEN_TARGET_ARCH)-ioemu lwip-$(XEN_TARGET_ARCH) libxc ioemu
  7. DEF_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)"
  8. .PHONY: caml-stubdom
  9. caml-stubdom: mini-os-$(XEN_TARGET_ARCH)-caml lwip-$(XEN_TARGET_ARCH) libxc cross-ocaml caml
  10. DEF_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"
  11. .PHONY: c-stubdom
  12. c-stubdom: mini-os-$(XEN_TARGET_ARCH)-c lwip-$(XEN_TARGET_ARCH) libxc c
  13. DEF_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
  14. .PHONY: vtpm-stubdom
  15. vtpm-stubdom: mini-os-$(XEN_TARGET_ARCH)-vtpm vtpm
  16. DEF_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"
  17. .PHONY: vtpmmgr-stubdom
  18. vtpmmgr-stubdom: mini-os-$(XEN_TARGET_ARCH)-vtpmmgr vtpmmgr
  19. DEF_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"
  20. .PHONY: pv-grub
  21. pv-grub: mini-os-$(XEN_TARGET_ARCH)-grub libxc grub
  22. DEF_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
  23. .PHONY: xenstore-stubdom
  24. xenstore-stubdom: mini-os-$(XEN_TARGET_ARCH)-xenstore libxc xenstore
  25. DEF_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 + Stubdom

初步的想法是将VMI中的Example程序process-list通过编译的方式与mini-os进行编译,首先需要将libvmi的依赖的库进行相关编译。

之前的几个库都进行了交叉编译libvmi是否需要?
解答:新的libvmi的库需要进行编译否者将会提示

  1. ld: warning: section `.bss' type changed to PROGBITS
  2. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `main':
  3. /usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:58: undefined reference to `vmi_init'
  4. /usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:64: undefined reference to `vmi_get_ostype'
  5. /usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:69: undefined reference to `vmi_get_ostype'
  6. /usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:170: undefined reference to `vmi_resume_vm'
  7. /usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:173: undefined reference to `vmi_destroy'
  8. /usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:65: undefined reference to `vmi_get_offset'
  9. /usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:66: undefined reference to `vmi_get_offset'
  10. /usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:67: undefined reference to `vmi_get_offset'
  11. /usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:89: undefined reference to `vmi_pause_vm'
  12. /usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:95: undefined reference to `vmi_get_name'
  13. /usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:97: undefined reference to `vmi_get_access_mode'
  14. /usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:98: undefined reference to `vmi_get_vmid'
  15. /usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:108: undefined reference to `vmi_get_ostype'
  16. /usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:115: undefined reference to `vmi_get_ostype'
  17. /usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:160: undefined reference to `vmi_read_addr_va'
  18. /usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:142: undefined reference to `vmi_read_32_va'
  19. /usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:144: undefined reference to `vmi_read_str_va'
  20. /usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:70: undefined reference to `vmi_get_offset'
  21. /usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:71: undefined reference to `vmi_get_offset'
  22. /usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:72: undefined reference to `vmi_get_offset'
  23. /usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:113: undefined reference to `vmi_translate_ksym2v'
  24. /usr/src/xen-4.6.0/stubdom/libvmi/examples/process-list.c:118: undefined reference to `vmi_read_addr_ksym'
  25. make[1]: *** [/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os] Error 1
  26. ld: warning: section `.bss' type changed to PROGBITS
  27. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_get_address_width':
  28. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/accessors.c:49: undefined reference to `driver_get_address_width'
  29. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_get_winver':
  30. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/accessors.c:78: undefined reference to `find_windows_version'
  31. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_get_offset':
  32. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/accessors.c:139: undefined reference to `find_pname_offset'
  33. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_get_name':
  34. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/accessors.c:224: undefined reference to `driver_get_name'
  35. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_get_vmid':
  36. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/accessors.c:237: undefined reference to `driver_get_id'
  37. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_get_name':
  38. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/accessors.c:224: undefined reference to `driver_get_name'
  39. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_get_vmid':
  40. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/accessors.c:239: undefined reference to `driver_get_id_from_name'
  41. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_get_winver_manual':
  42. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/accessors.c:117: undefined reference to `find_windows_version'
  43. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_get_vcpureg':
  44. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/accessors.c:190: undefined reference to `driver_get_vcpureg'
  45. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_set_vcpureg':
  46. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/accessors.c:200: undefined reference to `driver_set_vcpureg'
  47. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_pause_vm':
  48. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/accessors.c:207: undefined reference to `driver_pause_vm'
  49. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_resume_vm':
  50. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/accessors.c:214: undefined reference to `driver_resume_vm'
  51. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `errprint':
  52. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/convenience.c:57: undefined reference to `stderr'
  53. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/convenience.c:59: undefined reference to `stderr'
  54. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `warnprint':
  55. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/convenience.c:71: undefined reference to `stderr'
  56. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/convenience.c:73: undefined reference to `stderr'
  57. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `read_config_ghashtable_entries':
  58. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:234: undefined reference to `__strdup'
  59. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `read_config_file':
  60. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:93: undefined reference to `yyin'
  61. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:96: undefined reference to `yyin'
  62. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:108: undefined reference to `vmi_parse_config'
  63. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:213: undefined reference to `yyin'
  64. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:113: undefined reference to `vmi_get_config'
  65. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:116: undefined reference to `__strdup'
  66. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:100: undefined reference to `yyin'
  67. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:102: undefined reference to `stderr'
  68. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:100: undefined reference to `yyin'
  69. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `read_config_ghashtable':
  70. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:322: undefined reference to `g_hash_table_foreach'
  71. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `get_memory_layout':
  72. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:382: undefined reference to `driver_get_vcpureg'
  73. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:397: undefined reference to `driver_get_vcpureg'
  74. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:402: undefined reference to `driver_get_vcpureg'
  75. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:415: undefined reference to `driver_get_vcpureg'
  76. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:457: undefined reference to `driver_is_pv'
  77. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:424: undefined reference to `driver_get_address_width'
  78. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `set_id_and_name':
  79. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:566: undefined reference to `driver_get_id_from_name'
  80. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:568: undefined reference to `driver_set_id'
  81. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:605: undefined reference to `__strndup'
  82. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:606: undefined reference to `driver_set_name'
  83. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_init_private':
  84. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:662: undefined reference to `driver_init'
  85. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:695: undefined reference to `driver_get_memsize'
  86. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `set_image_type_for_file':
  87. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:541: undefined reference to `__strndup'
  88. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:542: undefined reference to `__strndup'
  89. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `set_id_and_name':
  90. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:555: undefined reference to `driver_set_name'
  91. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_init_private':
  92. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:744: undefined reference to `driver_get_memsize'
  93. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `set_driver_type':
  94. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:515: undefined reference to `driver_init_mode'
  95. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `set_id_and_name':
  96. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:585: undefined reference to `driver_check_id'
  97. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:590: undefined reference to `driver_set_id'
  98. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:592: undefined reference to `driver_get_name_from_id'
  99. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_init_private':
  100. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:730: undefined reference to `linux_init'
  101. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:733: undefined reference to `windows_init'
  102. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `find_cr3':
  103. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:339: undefined reference to `windows_find_cr3'
  104. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_init_custom':
  105. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:806: undefined reference to `__strdup'
  106. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:818: undefined reference to `g_hash_table_lookup'
  107. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:820: undefined reference to `g_hash_table_lookup_extended'
  108. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:803: undefined reference to `__strdup'
  109. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_destroy':
  110. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:904: undefined reference to `driver_destroy'
  111. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:909: undefined reference to `memory_cache_destroy'
  112. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_init_complete':
  113. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:858: undefined reference to `__strdup'
  114. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/core.c:855: undefined reference to `__strdup'
  115. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `events_init':
  116. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:99: undefined reference to `g_int64_equal'
  117. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:99: undefined reference to `g_int64_hash'
  118. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:99: undefined reference to `g_hash_table_new_full'
  119. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:101: undefined reference to `g_int_equal'
  120. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:101: undefined reference to `g_int_hash'
  121. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:101: undefined reference to `g_hash_table_new'
  122. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:102: undefined reference to `g_free'
  123. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:102: undefined reference to `g_int_equal'
  124. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:102: undefined reference to `g_int_hash'
  125. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:102: undefined reference to `g_hash_table_new_full'
  126. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `events_destroy':
  127. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:115: undefined reference to `g_hash_table_foreach_remove'
  128. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:116: undefined reference to `g_hash_table_destroy'
  129. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:121: undefined reference to `g_hash_table_foreach_steal'
  130. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:122: undefined reference to `g_hash_table_destroy'
  131. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:127: undefined reference to `g_hash_table_foreach_remove'
  132. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `register_reg_event':
  133. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:138: undefined reference to `g_hash_table_lookup'
  134. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:143: undefined reference to `driver_set_reg_access'
  135. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:145: undefined reference to `g_hash_table_insert'
  136. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `register_mem_event':
  137. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:163: undefined reference to `g_hash_table_lookup'
  138. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:195: undefined reference to `g_hash_table_lookup'
  139. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:205: undefined reference to `driver_set_mem_access'
  140. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:209: undefined reference to `g_hash_table_insert'
  141. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:181: undefined reference to `driver_set_mem_access'
  142. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:234: undefined reference to `driver_set_mem_access'
  143. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:238: undefined reference to `g_malloc0'
  144. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:257: undefined reference to `g_hash_table_insert'
  145. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:218: undefined reference to `driver_set_mem_access'
  146. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:221: undefined reference to `g_int64_equal'
  147. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:221: undefined reference to `g_int64_hash'
  148. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:221: undefined reference to `g_hash_table_new'
  149. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:224: undefined reference to `g_hash_table_insert'
  150. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:249: undefined reference to `g_int64_equal'
  151. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:249: undefined reference to `g_int64_hash'
  152. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:249: undefined reference to `g_hash_table_new'
  153. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:250: undefined reference to `g_hash_table_insert'
  154. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `register_singlestep_event':
  155. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:276: undefined reference to `g_hash_table_lookup'
  156. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:284: undefined reference to `driver_start_single_step'
  157. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:288: undefined reference to `g_hash_table_insert'
  158. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `clear_reg_event':
  159. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:305: undefined reference to `g_hash_table_lookup'
  160. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:310: undefined reference to `driver_set_reg_access'
  161. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:315: undefined reference to `g_hash_table_remove'
  162. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `clear_mem_event':
  163. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:334: undefined reference to `g_hash_table_lookup'
  164. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:394: undefined reference to `g_hash_table_lookup'
  165. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:406: undefined reference to `g_hash_table_steal'
  166. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:416: undefined reference to `g_hash_table_size'
  167. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:429: undefined reference to `driver_set_mem_access'
  168. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:437: undefined reference to `g_hash_table_size'
  169. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:361: undefined reference to `g_hash_table_iter_init'
  170. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:361: undefined reference to `g_hash_table_iter_next'
  171. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:368: undefined reference to `driver_set_mem_access'
  172. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:453: undefined reference to `g_hash_table_insert'
  173. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:421: undefined reference to `g_hash_table_iter_init'
  174. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:421: undefined reference to `g_hash_table_iter_next'
  175. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:439: undefined reference to `g_hash_table_destroy'
  176. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:447: undefined reference to `g_hash_table_remove'
  177. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `clear_singlestep_event':
  178. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:482: undefined reference to `driver_stop_single_step'
  179. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:485: undefined reference to `g_hash_table_remove'
  180. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `memevent_page_clean':
  181. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:79: undefined reference to `g_hash_table_foreach_steal'
  182. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:80: undefined reference to `g_hash_table_destroy'
  183. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_get_reg_event':
  184. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:498: undefined reference to `g_hash_table_lookup'
  185. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_get_mem_event':
  186. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:507: undefined reference to `g_hash_table_lookup'
  187. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:513: undefined reference to `g_hash_table_lookup'
  188. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_get_singlestep_event':
  189. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:603: undefined reference to `g_hash_table_lookup'
  190. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_stop_single_step_vcpu':
  191. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:616: undefined reference to `g_hash_table_remove'
  192. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:618: undefined reference to `driver_stop_single_step'
  193. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_shutdown_single_step':
  194. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:629: undefined reference to `driver_shutdown_single_step'
  195. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:636: undefined reference to `g_hash_table_destroy'
  196. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:637: undefined reference to `g_free'
  197. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:637: undefined reference to `g_int_equal'
  198. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:637: undefined reference to `g_int_hash'
  199. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:637: undefined reference to `g_hash_table_new_full'
  200. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `events_destroy':
  201. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:128: undefined reference to `g_hash_table_destroy'
  202. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_events_listen':
  203. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/events.c:598: undefined reference to `driver_events_listen'
  204. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_translate_kv2p':
  205. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/memory.c:486: undefined reference to `driver_get_vcpureg'
  206. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_translate_ksym2v':
  207. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/memory.c:550: undefined reference to `linux_system_map_symbol_to_address'
  208. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/memory.c:555: undefined reference to `windows_symbol_to_address'
  209. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_translate_sym2v':
  210. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/memory.c:580: undefined reference to `windows_export_to_rva'
  211. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_translate_v2sym':
  212. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/memory.c:606: undefined reference to `windows_rva_to_export'
  213. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_pid_to_dtb':
  214. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/memory.c:624: undefined reference to `linux_pid_to_pgd'
  215. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/memory.c:627: undefined reference to `windows_pid_to_pgd'
  216. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_dtb_to_pid':
  217. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/memory.c:648: undefined reference to `windows_pgd_to_pid'
  218. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/memory.c:645: undefined reference to `linux_pgd_to_pid'
  219. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_read_page':
  220. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/memory.c:661: undefined reference to `driver_read_page'
  221. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `vmi_convert_str_encoding':
  222. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/read.c:546: undefined reference to `iconv_open'
  223. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/read.c:561: undefined reference to `iconv'
  224. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/read.c:596: undefined reference to `iconv_close'
  225. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/read.c:585: undefined reference to `iconv_close'
  226. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `sym_cache_entry_create':
  227. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:246: undefined reference to `__strdup'
  228. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `pid_cache_init':
  229. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:144: undefined reference to `g_int_equal'
  230. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:144: undefined reference to `g_int_hash'
  231. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:144: undefined reference to `g_hash_table_new_full'
  232. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `pid_cache_get':
  233. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:164: undefined reference to `g_hash_table_lookup'
  234. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `pid_cache_del':
  235. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:197: undefined reference to `g_hash_table_remove'
  236. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `sym_cache_init':
  237. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:259: undefined reference to `g_hash_table_destroy'
  238. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:259: undefined reference to `g_free'
  239. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:259: undefined reference to `g_hash_table_new_full'
  240. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `sym_cache_get':
  241. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:288: undefined reference to `g_hash_table_lookup'
  242. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:292: undefined reference to `g_hash_table_lookup'
  243. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `sym_cache_set':
  244. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:315: undefined reference to `g_hash_table_lookup'
  245. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:316: undefined reference to `g_str_equal'
  246. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:316: undefined reference to `g_str_hash'
  247. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:316: undefined reference to `g_hash_table_new_full'
  248. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:318: undefined reference to `g_hash_table_insert'
  249. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `sym_cache_del':
  250. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:340: undefined reference to `g_hash_table_lookup'
  251. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:346: undefined reference to `g_hash_table_remove'
  252. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:349: undefined reference to `g_hash_table_size'
  253. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:350: undefined reference to `g_hash_table_remove'
  254. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `rva_cache_init':
  255. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:370: undefined reference to `g_hash_table_destroy'
  256. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:370: undefined reference to `g_free'
  257. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:370: undefined reference to `g_hash_table_new_full'
  258. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `rva_cache_get':
  259. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:398: undefined reference to `g_hash_table_lookup'
  260. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:402: undefined reference to `g_hash_table_lookup'
  261. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `rva_cache_set':
  262. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:425: undefined reference to `g_hash_table_lookup'
  263. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:426: undefined reference to `g_int_equal'
  264. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:426: undefined reference to `g_int_hash'
  265. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:426: undefined reference to `g_hash_table_new_full'
  266. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:428: undefined reference to `g_hash_table_insert'
  267. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `rva_cache_del':
  268. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:450: undefined reference to `g_hash_table_lookup'
  269. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:456: undefined reference to `g_hash_table_remove'
  270. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:459: undefined reference to `g_hash_table_size'
  271. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:460: undefined reference to `g_hash_table_remove'
  272. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `v2p_cache_init':
  273. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:496: undefined reference to `g_free'
  274. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:496: undefined reference to `g_hash_table_new_full'
  275. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `v2p_cache_get':
  276. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:519: undefined reference to `g_hash_table_lookup'
  277. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `v2p_cache_del':
  278. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:563: undefined reference to `g_hash_table_remove'
  279. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `pid_cache_destroy':
  280. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:152: undefined reference to `g_hash_table_destroy'
  281. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `pid_cache_set':
  282. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:185: undefined reference to `g_hash_table_insert'
  283. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `pid_cache_flush':
  284. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:209: undefined reference to `g_hash_table_remove_all'
  285. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `sym_cache_destroy':
  286. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:267: undefined reference to `g_hash_table_destroy'
  287. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `sym_cache_set':
  288. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:323: undefined reference to `g_hash_table_insert'
  289. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `sym_cache_flush':
  290. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:361: undefined reference to `g_hash_table_remove_all'
  291. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `rva_cache_destroy':
  292. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:378: undefined reference to `g_hash_table_destroy'
  293. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `rva_cache_set':
  294. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:433: undefined reference to `g_hash_table_insert'
  295. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `rva_cache_flush':
  296. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:471: undefined reference to `g_hash_table_remove_all'
  297. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `v2p_cache_destroy':
  298. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:503: undefined reference to `g_hash_table_destroy'
  299. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `v2p_cache_set':
  300. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:543: undefined reference to `g_hash_table_insert'
  301. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `v2p_cache_flush':
  302. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:575: undefined reference to `g_hash_table_remove_all'
  303. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `pid_cache_flush':
  304. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:209: undefined reference to `g_hash_table_remove_all'
  305. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `sym_cache_flush':
  306. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:361: undefined reference to `g_hash_table_remove_all'
  307. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `rva_cache_flush':
  308. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:471: undefined reference to `g_hash_table_remove_all'
  309. /usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os.o: In function `v2p_cache_flush':
  310. /usr/src/xen-4.6.0/stubdom/libvmi-x86_64/libvmi/cache.c:575: undefined reference to `g_hash_table_remove_all'
  311. make[1]: *** [/usr/src/xen-4.6.0/stubdom/mini-os-x86_64-libvmi/mini-os] Error 1
  312. make[1]: Leaving directory `/usr/src/xen-4.6.0/extras/mini-os'
  313. make: *** [libvmi-stubdom] Error 2

发现makefile进行处理的时候将会产生很多的

下一步将会进行添加 Cross-libvmi的过程。

添加Glibc库

这些问题不仅需要编译的时候加入静态库,并且需要在include里添加头文件

目前的问题都能够将程序进行静态编译之后与mini-os进行链接。完成stubdom的搭建。

从头再来

阅读libvmi的README.rst,需要的依赖库为:

在编译的过程中,限制了编译器查找头文件以及连接器查找库文件的位置。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注