I tried to play with QuickJS on WSL, and it works perfectly. But when I tried to cross compile it on WSL through MinGW according to documentation, it doesn't even compile with MinGW.
The is the steps I tried (in WSL):
wget https://bellard.org/quickjs/quickjs-2019-12-21.tar.xz
tar xf quickjs-2019-12-21.tar.xz
cd quickjs-2019-12-21.tar.xz
sudo apt install mingw-w64 -y
vim Makefile # Disable "CONFIG_LTO" and enable "CONFIG_WIN32"
make
And the output is:
mkdir -p .obj .obj/examples .obj/tests
i686-w64-mingw32-gcc -g -Wall -MMD -MF .obj/quickjs.check.o.d -Wno-array-bounds -Wno-format-truncation -D_GNU_SOURCE -DCONFIG_VERSION=\"2019-12-21\" -DCONFIG_CHECK_JSVALUE -c -o .obj/quickjs.check.o quickjs.c
i686-w64-mingw32-gcc -g -Wall -MMD -MF .obj/qjs.check.o.d -Wno-array-bounds -Wno-format-truncation -D_GNU_SOURCE -DCONFIG_VERSION=\"2019-12-21\" -DCONFIG_CHECK_JSVALUE -c -o .obj/qjs.check.o qjs.c
qjs.c: In function ‘js_trace_malloc_printf’:
qjs.c:152:35: warning: unknown conversion type character ‘l’ in format [-Wformat=]
printf("H%+06lld.%zd",
^
qjs.c:152:39: warning: unknown conversion type character ‘z’ in format [-Wformat=]
printf("H%+06lld.%zd",
^
qjs.c:152:28: warning: too many arguments for format [-Wformat-extra-args]
printf("H%+06lld.%zd",
^~~~~~~~~~~~~~
qjs.c:152:35: warning: unknown conversion type character ‘l’ in format [-Wformat=]
printf("H%+06lld.%zd",
^
qjs.c:152:39: warning: unknown conversion type character ‘z’ in format [-Wformat=]
printf("H%+06lld.%zd",
^
qjs.c:152:28: warning: too many arguments for format [-Wformat-extra-args]
printf("H%+06lld.%zd",
^~~~~~~~~~~~~~
qjs.c:161:26: warning: unknown conversion type character ‘z’ in format [-Wformat=]
printf("%zd", sz);
^
qjs.c:161:24: warning: too many arguments for format [-Wformat-extra-args]
printf("%zd", sz);
^~~~~
qjs.c:161:26: warning: unknown conversion type character ‘z’ in format [-Wformat=]
printf("%zd", sz);
^
qjs.c:161:24: warning: too many arguments for format [-Wformat-extra-args]
printf("%zd", sz);
^~~~~
qjs.c: In function ‘js_trace_malloc’:
qjs.c:186:35: warning: unknown conversion type character ‘z’ in format [-Wformat=]
js_trace_malloc_printf(s, "A %zd -> %p\n", size, ptr);
^
qjs.c:186:42: warning: format ‘%p’ expects argument of type ‘void *’, but argument 3 has type ‘size_t {aka unsigned int}’ [-Wformat=]
js_trace_malloc_printf(s, "A %zd -> %p\n", size, ptr);
~^
%d
qjs.c:186:31: warning: too many arguments for format [-Wformat-extra-args]
js_trace_malloc_printf(s, "A %zd -> %p\n", size, ptr);
^~~~~~~~~~~~~~~
qjs.c: In function ‘js_trace_realloc’:
qjs.c:216:39: warning: unknown conversion type character ‘z’ in format [-Wformat=]
js_trace_malloc_printf(s, "R %zd %p\n", size, ptr);
^
qjs.c:216:43: warning: format ‘%p’ expects argument of type ‘void *’, but argument 3 has type ‘size_t {aka unsigned int}’ [-Wformat=]
js_trace_malloc_printf(s, "R %zd %p\n", size, ptr);
~^
%d
qjs.c:216:35: warning: too many arguments for format [-Wformat-extra-args]
js_trace_malloc_printf(s, "R %zd %p\n", size, ptr);
^~~~~~~~~~~~
qjs.c:225:35: warning: unknown conversion type character ‘z’ in format [-Wformat=]
js_trace_malloc_printf(s, "R %zd %p", size, ptr);
^
qjs.c:225:39: warning: format ‘%p’ expects argument of type ‘void *’, but argument 3 has type ‘size_t {aka unsigned int}’ [-Wformat=]
js_trace_malloc_printf(s, "R %zd %p", size, ptr);
~^
%d
qjs.c:225:31: warning: too many arguments for format [-Wformat-extra-args]
js_trace_malloc_printf(s, "R %zd %p", size, ptr);
^~~~~~~~~~
i686-w64-mingw32-gcc -g -Wall -MMD -MF .obj/qjs.o.d -Wno-array-bounds -Wno-format-truncation -D_GNU_SOURCE -DCONFIG_VERSION=\"2019-12-21\" -O2 -c -o .obj/qjs.o qjs.c
qjs.c: In function ‘js_trace_malloc_printf’:
qjs.c:152:35: warning: unknown conversion type character ‘l’ in format [-Wformat=]
printf("H%+06lld.%zd",
^
qjs.c:152:39: warning: unknown conversion type character ‘z’ in format [-Wformat=]
printf("H%+06lld.%zd",
^
qjs.c:152:28: warning: too many arguments for format [-Wformat-extra-args]
printf("H%+06lld.%zd",
^~~~~~~~~~~~~~
qjs.c:152:35: warning: unknown conversion type character ‘l’ in format [-Wformat=]
printf("H%+06lld.%zd",
^
qjs.c:152:39: warning: unknown conversion type character ‘z’ in format [-Wformat=]
printf("H%+06lld.%zd",
^
qjs.c:152:28: warning: too many arguments for format [-Wformat-extra-args]
printf("H%+06lld.%zd",
^~~~~~~~~~~~~~
qjs.c:161:26: warning: unknown conversion type character ‘z’ in format [-Wformat=]
printf("%zd", sz);
^
qjs.c:161:24: warning: too many arguments for format [-Wformat-extra-args]
printf("%zd", sz);
^~~~~
qjs.c:161:26: warning: unknown conversion type character ‘z’ in format [-Wformat=]
printf("%zd", sz);
^
qjs.c:161:24: warning: too many arguments for format [-Wformat-extra-args]
printf("%zd", sz);
^~~~~
qjs.c: In function ‘js_trace_malloc’:
qjs.c:186:35: warning: unknown conversion type character ‘z’ in format [-Wformat=]
js_trace_malloc_printf(s, "A %zd -> %p\n", size, ptr);
^
qjs.c:186:42: warning: format ‘%p’ expects argument of type ‘void *’, but argument 3 has type ‘size_t {aka unsigned int}’ [-Wformat=]
js_trace_malloc_printf(s, "A %zd -> %p\n", size, ptr);
~^
%d
qjs.c:186:31: warning: too many arguments for format [-Wformat-extra-args]
js_trace_malloc_printf(s, "A %zd -> %p\n", size, ptr);
^~~~~~~~~~~~~~~
qjs.c: In function ‘js_trace_realloc’:
qjs.c:216:39: warning: unknown conversion type character ‘z’ in format [-Wformat=]
js_trace_malloc_printf(s, "R %zd %p\n", size, ptr);
^
qjs.c:216:43: warning: format ‘%p’ expects argument of type ‘void *’, but argument 3 has type ‘size_t {aka unsigned int}’ [-Wformat=]
js_trace_malloc_printf(s, "R %zd %p\n", size, ptr);
~^
%d
qjs.c:216:35: warning: too many arguments for format [-Wformat-extra-args]
js_trace_malloc_printf(s, "R %zd %p\n", size, ptr);
^~~~~~~~~~~~
qjs.c:225:35: warning: unknown conversion type character ‘z’ in format [-Wformat=]
js_trace_malloc_printf(s, "R %zd %p", size, ptr);
^
qjs.c:225:39: warning: format ‘%p’ expects argument of type ‘void *’, but argument 3 has type ‘size_t {aka unsigned int}’ [-Wformat=]
js_trace_malloc_printf(s, "R %zd %p", size, ptr);
~^
%d
qjs.c:225:31: warning: too many arguments for format [-Wformat-extra-args]
js_trace_malloc_printf(s, "R %zd %p", size, ptr);
^~~~~~~~~~
gcc -g -Wall -MMD -MF .obj/qjsc.host.o.d -Wno-array-bounds -Wno-format-truncation -D_GNU_SOURCE -DCONFIG_VERSION=\"2019-12-21\" -DCONFIG_CC=\"gcc\" -DCONFIG_PREFIX=\"/usr/local\" -O2 -c -o .obj/qjsc.host.o qjsc.c
gcc -g -Wall -MMD -MF .obj/quickjs.host.o.d -Wno-array-bounds -Wno-format-truncation -D_GNU_SOURCE -DCONFIG_VERSION=\"2019-12-21\" -O2 -c -o .obj/quickjs.host.o quickjs.c
gcc -g -Wall -MMD -MF .obj/libregexp.host.o.d -Wno-array-bounds -Wno-format-truncation -D_GNU_SOURCE -DCONFIG_VERSION=\"2019-12-21\" -O2 -c -o .obj/libregexp.host.o libregexp.c
gcc -g -Wall -MMD -MF .obj/libunicode.host.o.d -Wno-array-bounds -Wno-format-truncation -D_GNU_SOURCE -DCONFIG_VERSION=\"2019-12-21\" -O2 -c -o .obj/libunicode.host.o libunicode.c
gcc -g -Wall -MMD -MF .obj/cutils.host.o.d -Wno-array-bounds -Wno-format-truncation -D_GNU_SOURCE -DCONFIG_VERSION=\"2019-12-21\" -O2 -c -o .obj/cutils.host.o cutils.c
gcc -g -Wall -MMD -MF .obj/quickjs-libc.host.o.d -Wno-array-bounds -Wno-format-truncation -D_GNU_SOURCE -DCONFIG_VERSION=\"2019-12-21\" -O2 -c -o .obj/quickjs-libc.host.o quickjs-libc.c
gcc -g -o host-qjsc .obj/qjsc.host.o .obj/quickjs.host.o .obj/libregexp.host.o .obj/libunicode.host.o .obj/cutils.host.o .obj/quickjs-libc.host.o -lm
.obj/quickjs-libc.host.o: In function `js_module_loader_so':
/mnt/c/Users/maple3142/Downloads/quickjs-2019-12-21/quickjs-libc.c:405: undefined reference to `dlopen'
/mnt/c/Users/maple3142/Downloads/quickjs-2019-12-21/quickjs-libc.c:414: undefined reference to `dlsym'
/mnt/c/Users/maple3142/Downloads/quickjs-2019-12-21/quickjs-libc.c:427: undefined reference to `dlclose'
/mnt/c/Users/maple3142/Downloads/quickjs-2019-12-21/quickjs-libc.c:405: undefined reference to `dlopen'
collect2: error: ld returned 1 exit status
Makefile:190: recipe for target 'host-qjsc' failed
make: *** [host-qjsc] Error 1
Additional information:
- WSL version: Ubuntu 18.04.2 (WSL 1)
- Windows host version: Windows 10 1909 (Build 18363.535)
- Source code of QuickJS(2019/12/21): https://bellard.org/quickjs/quickjs-2019-12-21.tar.xz