[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug 1885827] Re: building plugin failed on Windows with mingw
From: |
Emilio G. Cota |
Subject: |
[Bug 1885827] Re: building plugin failed on Windows with mingw |
Date: |
Thu, 09 Jul 2020 02:51:45 -0000 |
You should then find out why libqemu_plugin.dll.a is not working. It is
possible though that your linked is calling the import library something
else, for instance adding a .dll extension to it.
You will have to run a few tests with your linker (I'd just use the
examples from the stackoverflow links I posted above) to see the name of
the import library that gets created. My assumption is that some library
gets created, otherwise the linked should give you an error and AFAICT
it does not.
Once you find what the import library us, you should be in good shape to
adapt the above for QEMU. Let us know how it goes!
--
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1885827
Title:
building plugin failed on Windows with mingw
Status in QEMU:
New
Bug description:
I want to build QEMU 4.2.0's plugin module on Windows 7/10 with Mingw, but
the building process faild.
The step I follow is listed below:
1. create "dsp_build" diretory under source file folder
2. change directory to dsp_build , and run ../configure
--target-list=dsp-softmmu --cross-prefix=x86_64-w64-mingw32- --enable-gtk
--enable-sdl --enable-debug --enable-plugins
3. build qemu project
4. switch dir to /dsp_build, make -C tests/plugin, yeilds error:
CC bb.o
D:/emu_devl/qemu_src/qemu-sr-dsp-a/qemu_tidsp_c3x/tests/plugin/bb.c:17:24:
error: variable 'qemu_plugin_version' definition is marked dllimport
17 | QEMU_PLUGIN_EXPORT int qemu_plugin_version = QEMU_PLUGIN_VERSION;
| ^~~~~~~~~~~~~~~~~~~
D:/emu_devl/qemu_src/qemu-sr-dsp-a/qemu_tidsp_c3x/tests/plugin/bb.c:17:24:
warning: 'qemu_plugin_version' redeclared without dllimport attribute: previous
dllimport ignored [-Wattributes]
D:/emu_devl/qemu_src/qemu-sr-dsp-a/qemu_tidsp_c3x/tests/plugin/bb.c: In
function 'vcpu_tb_exec':
D:/emu_devl/qemu_src/qemu-sr-dsp-a/qemu_tidsp_c3x/tests/plugin/bb.c:33:29:
warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
33 | unsigned long n_insns = (unsigned long)udata;
| ^
D:/emu_devl/qemu_src/qemu-sr-dsp-a/qemu_tidsp_c3x/tests/plugin/bb.c: In
function 'vcpu_tb_trans':
D:/emu_devl/qemu_src/qemu-sr-dsp-a/qemu_tidsp_c3x/tests/plugin/bb.c:51:46:
warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
51 | (void *)n_insns);
5. Then , I modified the QEMU_flags and the compilation command
arguments($(CC) ..) in the makefile :
BUILD_DIR := $(CURDIR)/../..
include $(BUILD_DIR)/config-host.mak
include $(SRC_PATH)/rules.mak
$(call set-vpath, $(SRC_PATH)/tests/plugin)
NAMES :=
NAMES += bb
NAMES += empty
NAMES += insn
NAMES += mem
NAMES += hotblocks
NAMES += howvec
NAMES += hotpages
SONAMES := $(addsuffix .so,$(addprefix lib,$(NAMES)))
QEMU_CFLAGS += -fPIC -DBUILDING_DLL #added
-DBUILDING_DLL
QEMU_CFLAGS += -I$(SRC_PATH)/include/qemu
all: $(SONAMES)
lib%.so: %.o
$(CC) -fPIC -shared -o $@ $^ $(LDLIBS) -L
/c/msys64/mingw64/lib/ -lglib-2.0
# original cmd: $(CC) -shared -Wl,-soname,$@ -o $@ $^
$(LDLIBS)
clean:
rm -f *.o *.so *.d
rm -Rf .libs
.PHONY: all clean
6. Executing make yeilds:
make: enter
“/d/emu_devl/qemu_src/qemu-sr-dsp-a/qemu_tidsp_c3x/build_dsp/tests/plugin”
CC bb.o
x86_64-w64-mingw32-gcc -fPIC -shared -o libbb.so bb.o -L
/c/msys64/mingw64/lib/ -lglib-2.0
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
bb.o: in function `plugin_exit':
D:/emu_devl/qemu_src/qemu-sr-dsp-a/qemu_tidsp_c3x/tests/plugin/bb.c:28:
undefined reference to `qemu_plugin_outs'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
D:/emu_devl/qemu_src/qemu-sr-dsp-a/qemu_tidsp_c3x/tests/plugin/bb.c:29:
undefined reference to `__stack_chk_fail'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
bb.o: in function `vcpu_tb_trans':
D:/emu_devl/qemu_src/qemu-sr-dsp-a/qemu_tidsp_c3x/tests/plugin/bb.c:41:
undefined reference to `qemu_plugin_tb_n_insns'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
D:/emu_devl/qemu_src/qemu-sr-dsp-a/qemu_tidsp_c3x/tests/plugin/bb.c:44:
undefined reference to `qemu_plugin_register_vcpu_tb_exec_inline'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
D:/emu_devl/qemu_src/qemu-sr-dsp-a/qemu_tidsp_c3x/tests/plugin/bb.c:46:
undefined reference to `qemu_plugin_register_vcpu_tb_exec_inline'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
D:/emu_devl/qemu_src/qemu-sr-dsp-a/qemu_tidsp_c3x/tests/plugin/bb.c:49:
undefined reference to `qemu_plugin_register_vcpu_tb_exec_cb'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
bb.o: in function `qemu_plugin_install':
D:/emu_devl/qemu_src/qemu-sr-dsp-a/qemu_tidsp_c3x/tests/plugin/bb.c:63:
undefined reference to `qemu_plugin_register_vcpu_tb_trans_cb'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
D:/emu_devl/qemu_src/qemu-sr-dsp-a/qemu_tidsp_c3x/tests/plugin/bb.c:64:
undefined reference to `qemu_plugin_register_atexit_cb'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe:
bb.o:bb.c:(.rdata$.refptr.__stack_chk_guard[.refptr.__stack_chk_guard]+0x0):
undefined reference to `__stack_chk_guard'
collect2.exe: error: ld returned 1 exit status
It looks like linking problem(fail to link functions defined in api.c,
core.c...), but I have no idea what goes wrong. If I mannualy add api.o, core.o
in the compilation command, still get error like undefined reference to
'__stack_chk_guard'.
My collegue can build 4.2.0 plugins on Ubuntu Linux without any problem.
To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1885827/+subscriptions
- [Bug 1885827] Re: building plugin failed on Windows with mingw, Xiaolei, 2020/07/03
- [Bug 1885827] Re: building plugin failed on Windows with mingw, Emilio G. Cota, 2020/07/03
- [Bug 1885827] Re: building plugin failed on Windows with mingw, Emilio G. Cota, 2020/07/04
- [Bug 1885827] Re: building plugin failed on Windows with mingw, Xiaolei, 2020/07/06
- [Bug 1885827] Re: building plugin failed on Windows with mingw, Emilio G. Cota, 2020/07/06
- [Bug 1885827] Re: building plugin failed on Windows with mingw, Xiaolei, 2020/07/07
- [Bug 1885827] Re: building plugin failed on Windows with mingw,
Emilio G. Cota <=