I have some sample Mojo code:
fn main():
print("Hello, world!")
for i in range(10000):
print_no_newline(i)
print_no_newline(' ')
And I run mojo build test.
And it makes me a file with a blank extension. Which is expected. And it runs fine!
I did my research, and I am pretty sure (and also I looked in the file with a text file viewer and found the word ELF written in it in plain text, so that helped) that it is a linux elf executable file. I can run it on my windows subsystem for linux alright, but I need to use it in Windows itself.
So if anyone has any ways to compile mojo into an exe file or convert that file generated into an exe, that would be very helpful :)
I have tried mingw (in combination with extensive research) to convert the file into an exe and nothing seems to work
You can see I tried installing things, the installations don't work, and I install others that work, though when I try to use them on this file they fail
Here is the terminal output of what I tried;
username@username:~/mojo$ mojo build test.
username@username:~/mojo$ ./test
Hello, world!
username@username:~/mojo$ sudo apt-get install mingw32
[sudo] password for username:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package mingw32
username@username:~/mojo$ i586-mingw32msvc-cc test test.exe
i586-mingw32msvc-cc: command not found
username@username:~/mojo$ i586-mingw32msvc-cc ./test test.exe
i586-mingw32msvc-cc: command not found
username@username:~/mojo$ sudo apt-get install mingw32
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package mingw32
username@username:~/mojo$ sudo apt-get uninstall mingw32
E: Invalid operation uninstall
username@username:~/mojo$ sudo apt install mingw-w64
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
binutils-mingw-w64-i686 binutils-mingw-w64-x86-64 g++-mingw-w64 g++-mingw-w64-i686 g++-mingw-w64-i686-posix g++-mingw-w64-i686-win32 g++-mingw-w64-x86-64
g++-mingw-w64-x86-64-posix g++-mingw-w64-x86-64-win32 gcc-mingw-w64 gcc-mingw-w64-base gcc-mingw-w64-i686 gcc-mingw-w64-i686-posix
gcc-mingw-w64-i686-posix-runtime gcc-mingw-w64-i686-win32 gcc-mingw-w64-i686-win32-runtime gcc-mingw-w64-x86-64 gcc-mingw-w64-x86-64-posix
gcc-mingw-w64-x86-64-posix-runtime gcc-mingw-w64-x86-64-win32 gcc-mingw-w64-x86-64-win32-runtime mingw-w64-common mingw-w64-i686-dev mingw-w64-x86-64-dev
Suggested packages:
gcc-10-locales wine wine64
The following NEW packages will be installed:
binutils-mingw-w64-i686 binutils-mingw-w64-x86-64 g++-mingw-w64 g++-mingw-w64-i686 g++-mingw-w64-i686-posix g++-mingw-w64-i686-win32 g++-mingw-w64-x86-64
g++-mingw-w64-x86-64-posix g++-mingw-w64-x86-64-win32 gcc-mingw-w64 gcc-mingw-w64-base gcc-mingw-w64-i686 gcc-mingw-w64-i686-posix
gcc-mingw-w64-i686-posix-runtime gcc-mingw-w64-i686-win32 gcc-mingw-w64-i686-win32-runtime gcc-mingw-w64-x86-64 gcc-mingw-w64-x86-64-posix
gcc-mingw-w64-x86-64-posix-runtime gcc-mingw-w64-x86-64-win32 gcc-mingw-w64-x86-64-win32-runtime mingw-w64 mingw-w64-common mingw-w64-i686-dev
mingw-w64-x86-64-dev
0 upgraded, 25 newly installed, 0 to remove and 90 not upgraded.
Need to get 229 MB of archives.
After this operation, 1136 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://archive.ubuntu.com/ubuntu jammy/universe amd64 binutils-mingw-w64-i686 amd64 2.38-3ubuntu1+9build1 [2882 kB]
Get:2 http://archive.ubuntu.com/ubuntu jammy/universe amd64 mingw-w64-common all 8.0.0-1 [4911 kB]
Get:3 http://archive.ubuntu.com/ubuntu jammy/universe amd64 mingw-w64-i686-dev all 8.0.0-1 [2837 kB]
Get:4 http://archive.ubuntu.com/ubuntu jammy/universe amd64 gcc-mingw-w64-base amd64 10.3.0-14ubuntu1+24.3 [187 kB]
Get:5 http://archive.ubuntu.com/ubuntu jammy/universe amd64 gcc-mingw-w64-i686-posix-runtime amd64 10.3.0-14ubuntu1+24.3 [11.9 MB]
Get:6 http://archive.ubuntu.com/ubuntu jammy/universe amd64 gcc-mingw-w64-i686-posix amd64 10.3.0-14ubuntu1+24.3 [28.5 MB]
Get:7 http://archive.ubuntu.com/ubuntu jammy/universe amd64 g++-mingw-w64-i686-posix amd64 10.3.0-14ubuntu1+24.3 [11.4 MB]
Get:8 http://archive.ubuntu.com/ubuntu jammy/universe amd64 gcc-mingw-w64-i686-win32-runtime amd64 10.3.0-14ubuntu1+24.3 [11.9 MB]
Get:9 http://archive.ubuntu.com/ubuntu jammy/universe amd64 gcc-mingw-w64-i686-win32 amd64 10.3.0-14ubuntu1+24.3 [28.5 MB]
Get:10 http://archive.ubuntu.com/ubuntu jammy/universe amd64 g++-mingw-w64-i686-win32 amd64 10.3.0-14ubuntu1+24.3 [11.4 MB]
Get:11 http://archive.ubuntu.com/ubuntu jammy/universe amd64 binutils-mingw-w64-x86-64 amd64 2.38-3ubuntu1+9build1 [3308 kB]
Get:12 http://archive.ubuntu.com/ubuntu jammy/universe amd64 mingw-w64-x86-64-dev all 8.0.0-1 [3684 kB]
Get:13 http://archive.ubuntu.com/ubuntu jammy/universe amd64 gcc-mingw-w64-x86-64-posix-runtime amd64 10.3.0-14ubuntu1+24.3 [12.8 MB]
Get:14 http://archive.ubuntu.com/ubuntu jammy/universe amd64 gcc-mingw-w64-x86-64-posix amd64 10.3.0-14ubuntu1+24.3 [28.7 MB]
Get:15 http://archive.ubuntu.com/ubuntu jammy/universe amd64 g++-mingw-w64-x86-64-posix amd64 10.3.0-14ubuntu1+24.3 [11.6 MB]
Get:16 http://archive.ubuntu.com/ubuntu jammy/universe amd64 gcc-mingw-w64-x86-64-win32-runtime amd64 10.3.0-14ubuntu1+24.3 [12.8 MB]
Get:17 http://archive.ubuntu.com/ubuntu jammy/universe amd64 gcc-mingw-w64-x86-64-win32 amd64 10.3.0-14ubuntu1+24.3 [28.7 MB]
Get:18 http://archive.ubuntu.com/ubuntu jammy/universe amd64 g++-mingw-w64-x86-64-win32 amd64 10.3.0-14ubuntu1+24.3 [11.6 MB]
Get:19 http://archive.ubuntu.com/ubuntu jammy/universe amd64 g++-mingw-w64-i686 all 10.3.0-14ubuntu1+24.3 [186 kB]
Get:20 http://archive.ubuntu.com/ubuntu jammy/universe amd64 g++-mingw-w64-x86-64 all 10.3.0-14ubuntu1+24.3 [186 kB]
Get:21 http://archive.ubuntu.com/ubuntu jammy/universe amd64 g++-mingw-w64 all 10.3.0-14ubuntu1+24.3 [186 kB]
Get:22 http://archive.ubuntu.com/ubuntu jammy/universe amd64 gcc-mingw-w64-i686 all 10.3.0-14ubuntu1+24.3 [187 kB]
Get:23 http://archive.ubuntu.com/ubuntu jammy/universe amd64 gcc-mingw-w64-x86-64 all 10.3.0-14ubuntu1+24.3 [187 kB]
Get:24 http://archive.ubuntu.com/ubuntu jammy/universe amd64 gcc-mingw-w64 all 10.3.0-14ubuntu1+24.3 [186 kB]
Get:25 http://archive.ubuntu.com/ubuntu jammy/universe amd64 mingw-w64 all 8.0.0-1 [9052 B]
Fetched 229 MB in 42s (5421 kB/s)
debconf: unable to initialize frontend: Dialog
debconf: (Dialog frontend requires a screen at least 13 lines tall and 31 columns wide.)
debconf: falling back to frontend: Readline
Selecting previously unselected package binutils-mingw-w64-i686.
(Reading database ... 31760 files and directories currently installed.)
Preparing to unpack .../00-binutils-mingw-w64-i686_2.38-3ubuntu1+9build1_amd64.deb ...
Unpacking binutils-mingw-w64-i686 (2.38-3ubuntu1+9build1) ...
Selecting previously unselected package mingw-w64-common.
Preparing to unpack .../01-mingw-w64-common_8.0.0-1_all.deb ...
Unpacking mingw-w64-common (8.0.0-1) ...
Selecting previously unselected package mingw-w64-i686-dev.
Preparing to unpack .../02-mingw-w64-i686-dev_8.0.0-1_all.deb ...
Unpacking mingw-w64-i686-dev (8.0.0-1) ...
Selecting previously unselected package gcc-mingw-w64-base:amd64.
Preparing to unpack .../03-gcc-mingw-w64-base_10.3.0-14ubuntu1+24.3_amd64.deb ...
Unpacking gcc-mingw-w64-base:amd64 (10.3.0-14ubuntu1+24.3) ...
Selecting previously unselected package gcc-mingw-w64-i686-posix-runtime.
Preparing to unpack .../04-gcc-mingw-w64-i686-posix-runtime_10.3.0-14ubuntu1+24.3_amd64.deb ...
Unpacking gcc-mingw-w64-i686-posix-runtime (10.3.0-14ubuntu1+24.3) ...
Selecting previously unselected package gcc-mingw-w64-i686-posix.
Preparing to unpack .../05-gcc-mingw-w64-i686-posix_10.3.0-14ubuntu1+24.3_amd64.deb ...
Unpacking gcc-mingw-w64-i686-posix (10.3.0-14ubuntu1+24.3) ...
Selecting previously unselected package g++-mingw-w64-i686-posix.
Preparing to unpack .../06-g++-mingw-w64-i686-posix_10.3.0-14ubuntu1+24.3_amd64.deb ...
Unpacking g++-mingw-w64-i686-posix (10.3.0-14ubuntu1+24.3) ...
Selecting previously unselected package gcc-mingw-w64-i686-win32-runtime.
Preparing to unpack .../07-gcc-mingw-w64-i686-win32-runtime_10.3.0-14ubuntu1+24.3_amd64.deb ...
Unpacking gcc-mingw-w64-i686-win32-runtime (10.3.0-14ubuntu1+24.3) ...
Selecting previously unselected package gcc-mingw-w64-i686-win32.
Preparing to unpack .../08-gcc-mingw-w64-i686-win32_10.3.0-14ubuntu1+24.3_amd64.deb ...
Unpacking gcc-mingw-w64-i686-win32 (10.3.0-14ubuntu1+24.3) ...
Selecting previously unselected package g++-mingw-w64-i686-win32.
Preparing to unpack .../09-g++-mingw-w64-i686-win32_10.3.0-14ubuntu1+24.3_amd64.deb ...
Unpacking g++-mingw-w64-i686-win32 (10.3.0-14ubuntu1+24.3) ...
Selecting previously unselected package binutils-mingw-w64-x86-64.
Preparing to unpack .../10-binutils-mingw-w64-x86-64_2.38-3ubuntu1+9build1_amd64.deb ...
Unpacking binutils-mingw-w64-x86-64 (2.38-3ubuntu1+9build1) ...
Selecting previously unselected package mingw-w64-x86-64-dev.
Preparing to unpack .../11-mingw-w64-x86-64-dev_8.0.0-1_all.deb ...
Unpacking mingw-w64-x86-64-dev (8.0.0-1) ...
Selecting previously unselected package gcc-mingw-w64-x86-64-posix-runtime.
Preparing to unpack .../12-gcc-mingw-w64-x86-64-posix-runtime_10.3.0-14ubuntu1+24.3_amd64.deb ...
Unpacking gcc-mingw-w64-x86-64-posix-runtime (10.3.0-14ubuntu1+24.3) ...
Selecting previously unselected package gcc-mingw-w64-x86-64-posix.
Preparing to unpack .../13-gcc-mingw-w64-x86-64-posix_10.3.0-14ubuntu1+24.3_amd64.deb ...
Unpacking gcc-mingw-w64-x86-64-posix (10.3.0-14ubuntu1+24.3) ...
Selecting previously unselected package g++-mingw-w64-x86-64-posix.
Preparing to unpack .../14-g++-mingw-w64-x86-64-posix_10.3.0-14ubuntu1+24.3_amd64.deb ...
Unpacking g++-mingw-w64-x86-64-posix (10.3.0-14ubuntu1+24.3) ...
Selecting previously unselected package gcc-mingw-w64-x86-64-win32-runtime.
Preparing to unpack .../15-gcc-mingw-w64-x86-64-win32-runtime_10.3.0-14ubuntu1+24.3_amd64.deb ...
Unpacking gcc-mingw-w64-x86-64-win32-runtime (10.3.0-14ubuntu1+24.3) ...
Selecting previously unselected package gcc-mingw-w64-x86-64-win32.
Preparing to unpack .../16-gcc-mingw-w64-x86-64-win32_10.3.0-14ubuntu1+24.3_amd64.deb ...
Unpacking gcc-mingw-w64-x86-64-win32 (10.3.0-14ubuntu1+24.3) ...
Selecting previously unselected package g++-mingw-w64-x86-64-win32.
Preparing to unpack .../17-g++-mingw-w64-x86-64-win32_10.3.0-14ubuntu1+24.3_amd64.deb ...
Unpacking g++-mingw-w64-x86-64-win32 (10.3.0-14ubuntu1+24.3) ...
Selecting previously unselected package g++-mingw-w64-i686.
Preparing to unpack .../18-g++-mingw-w64-i686_10.3.0-14ubuntu1+24.3_all.deb ...
Unpacking g++-mingw-w64-i686 (10.3.0-14ubuntu1+24.3) ...
Selecting previously unselected package g++-mingw-w64-x86-64.
Preparing to unpack .../19-g++-mingw-w64-x86-64_10.3.0-14ubuntu1+24.3_all.deb ...
Unpacking g++-mingw-w64-x86-64 (10.3.0-14ubuntu1+24.3) ...
Selecting previously unselected package g++-mingw-w64.
Preparing to unpack .../20-g++-mingw-w64_10.3.0-14ubuntu1+24.3_all.deb ...
Unpacking g++-mingw-w64 (10.3.0-14ubuntu1+24.3) ...
Selecting previously unselected package gcc-mingw-w64-i686.
Preparing to unpack .../21-gcc-mingw-w64-i686_10.3.0-14ubuntu1+24.3_all.deb ...
Unpacking gcc-mingw-w64-i686 (10.3.0-14ubuntu1+24.3) ...
Selecting previously unselected package gcc-mingw-w64-x86-64.
Preparing to unpack .../22-gcc-mingw-w64-x86-64_10.3.0-14ubuntu1+24.3_all.deb ...
Unpacking gcc-mingw-w64-x86-64 (10.3.0-14ubuntu1+24.3) ...
Selecting previously unselected package gcc-mingw-w64.
Preparing to unpack .../23-gcc-mingw-w64_10.3.0-14ubuntu1+24.3_all.deb ...
Unpacking gcc-mingw-w64 (10.3.0-14ubuntu1+24.3) ...
Selecting previously unselected package mingw-w64.
Preparing to unpack .../24-mingw-w64_8.0.0-1_all.deb ...
Unpacking mingw-w64 (8.0.0-1) ...
Setting up binutils-mingw-w64-x86-64 (2.38-3ubuntu1+9build1) ...
Setting up gcc-mingw-w64-base:amd64 (10.3.0-14ubuntu1+24.3) ...
Setting up gcc-mingw-w64-i686-posix-runtime (10.3.0-14ubuntu1+24.3) ...
Setting up binutils-mingw-w64-i686 (2.38-3ubuntu1+9build1) ...
Setting up gcc-mingw-w64-x86-64-win32-runtime (10.3.0-14ubuntu1+24.3) ...
Setting up gcc-mingw-w64-i686-win32-runtime (10.3.0-14ubuntu1+24.3) ...
Setting up mingw-w64-common (8.0.0-1) ...
Setting up mingw-w64-x86-64-dev (8.0.0-1) ...
Setting up gcc-mingw-w64-x86-64-posix-runtime (10.3.0-14ubuntu1+24.3) ...
Setting up gcc-mingw-w64-x86-64-posix (10.3.0-14ubuntu1+24.3) ...
update-alternatives: using /usr/bin/x86_64-w64-mingw32-gcc-posix to provide /usr/bin/x86_64-w64-mingw32-gcc (x86_64-w64-mingw32-gcc) in auto mode
Setting up gcc-mingw-w64-x86-64-win32 (10.3.0-14ubuntu1+24.3) ...
update-alternatives: using /usr/bin/x86_64-w64-mingw32-gcc-win32 to provide /usr/bin/x86_64-w64-mingw32-gcc (x86_64-w64-mingw32-gcc) in auto mode
Setting up gcc-mingw-w64-x86-64 (10.3.0-14ubuntu1+24.3) ...
update-alternatives: warning: forcing reinstallation of alternative /usr/bin/x86_64-w64-mingw32-gcc-win32 because link group x86_64-w64-mingw32-gcc is broken
update-alternatives: warning: skip creation of /usr/bin/x86_64-w64-mingw32-gcc-8 because associated file /usr/bin/x86_64-w64-mingw32-gcc-8.3-win32 (of link group x86_64-w64-mingw32-gcc) doesn't exist
Setting up mingw-w64-i686-dev (8.0.0-1) ...
Setting up gcc-mingw-w64-i686-win32 (10.3.0-14ubuntu1+24.3) ...
update-alternatives: using /usr/bin/i686-w64-mingw32-gcc-win32 to provide /usr/bin/i686-w64-mingw32-gcc (i686-w64-mingw32-gcc) in auto mode
Setting up g++-mingw-w64-i686-win32 (10.3.0-14ubuntu1+24.3) ...
update-alternatives: using /usr/bin/i686-w64-mingw32-g++-win32 to provide /usr/bin/i686-w64-mingw32-g++ (i686-w64-mingw32-g++) in auto mode
Setting up g++-mingw-w64-x86-64-win32 (10.3.0-14ubuntu1+24.3) ...
update-alternatives: using /usr/bin/x86_64-w64-mingw32-g++-win32 to provide /usr/bin/x86_64-w64-mingw32-g++ (x86_64-w64-mingw32-g++) in auto mode
Setting up gcc-mingw-w64-i686-posix (10.3.0-14ubuntu1+24.3) ...
Setting up g++-mingw-w64-x86-64-posix (10.3.0-14ubuntu1+24.3) ...
Setting up gcc-mingw-w64-i686 (10.3.0-14ubuntu1+24.3) ...
update-alternatives: warning: forcing reinstallation of alternative /usr/bin/i686-w64-mingw32-gcc-win32 because link group i686-w64-mingw32-gcc is broken
update-alternatives: warning: skip creation of /usr/bin/i686-w64-mingw32-gcc-8 because associated file /usr/bin/i686-w64-mingw32-gcc-8.3-win32 (of link group i686-w64-mingw32-gcc) doesn't exist
Setting up g++-mingw-w64-x86-64 (10.3.0-14ubuntu1+24.3) ...
Setting up gcc-mingw-w64 (10.3.0-14ubuntu1+24.3) ...
Setting up g++-mingw-w64-i686-posix (10.3.0-14ubuntu1+24.3) ...
Setting up g++-mingw-w64-i686 (10.3.0-14ubuntu1+24.3) ...
Setting up g++-mingw-w64 (10.3.0-14ubuntu1+24.3) ...
Setting up mingw-w64 (8.0.0-1) ...
Processing triggers for man-db (2.10.2-1) ...
username@username:~/mojo$ x86_64-w64-mingw32 ./test test.exe
x86_64-w64-mingw32: command not found
username@username:~/mojo$ x86_64-w64-mingw32 ./test test.exe
x86_64-w64-mingw32: command not found
username@username:~/mojo$ mingw64
mingw64: command not found
username@username:~/mojo$ mingw-w64
mingw-w64: command not found
username@username:~/mojo$ sudo apt uninstall mingw-w64
E: Invalid operation uninstall
username@username:~/mojo$ sudo apt remove mingw-w64
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
binutils-mingw-w64-i686 binutils-mingw-w64-x86-64 g++-mingw-w64 g++-mingw-w64-i686 g++-mingw-w64-i686-posix g++-mingw-w64-i686-win32 g++-mingw-w64-x86-64
g++-mingw-w64-x86-64-posix g++-mingw-w64-x86-64-win32 gcc-mingw-w64 gcc-mingw-w64-base gcc-mingw-w64-i686 gcc-mingw-w64-i686-posix
gcc-mingw-w64-i686-posix-runtime gcc-mingw-w64-i686-win32 gcc-mingw-w64-i686-win32-runtime gcc-mingw-w64-x86-64 gcc-mingw-w64-x86-64-posix
gcc-mingw-w64-x86-64-posix-runtime gcc-mingw-w64-x86-64-win32 gcc-mingw-w64-x86-64-win32-runtime mingw-w64-common mingw-w64-i686-dev mingw-w64-x86-64-dev
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
mingw-w64
0 upgraded, 0 newly installed, 1 to remove and 90 not upgraded.
After this operation, 48.1 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 43718 files and directories currently installed.)
Removing mingw-w64 (8.0.0-1) ...
username@username:~/mojo$ sudo apt-get install gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
g++-mingw-w64-x86-64 is already the newest version (10.3.0-14ubuntu1+24.3).
g++-mingw-w64-x86-64 set to manually installed.
gcc-mingw-w64-x86-64 is already the newest version (10.3.0-14ubuntu1+24.3).
gcc-mingw-w64-x86-64 set to manually installed.
The following packages were automatically installed and are no longer required:
binutils-mingw-w64-i686 g++-mingw-w64 g++-mingw-w64-i686 g++-mingw-w64-i686-posix g++-mingw-w64-i686-win32 gcc-mingw-w64 gcc-mingw-w64-i686
gcc-mingw-w64-i686-posix gcc-mingw-w64-i686-posix-runtime gcc-mingw-w64-i686-win32 gcc-mingw-w64-i686-win32-runtime mingw-w64-i686-dev
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 90 not upgraded.
username@username:~/mojo$ x86_64-w64-mingw32-gcc -g -o test test.exe
x86_64-w64-mingw32-gcc: error: test.exe: No such file or directory
x86_64-w64-mingw32-gcc: fatal error: no input files
compilation terminated.
username@username:~/mojo$ x86_64-w64-mingw32-gcc -g -o test test
/usr/bin/x86_64-w64-mingw32-ld: test: error adding symbols: file in wrong format
collect2: error: ld returned 1 exit status
username@username:~/mojo$ x86_64-w64-mingw32-gcc -g -o -mwindows test test
/usr/bin/x86_64-w64-mingw32-ld: unrecognised emulation mode: windows.exe
Supported emulations: i386pep i386pe
collect2: error: ld returned 1 exit status
username@username:~/mojo$ x86_64-w64-mingw32-gcc -g -mwindows -o test test
/usr/bin/x86_64-w64-mingw32-ld: test: error adding symbols: file in wrong format
collect2: error: ld returned 1 exit status
username@username:~/mojo$
I have also tried much research and ended out with nothing.
from their build tool you can target triple of desired platform, but when you try to build for windows:
Since Mojo is not currently available for Windows, I assume that the build option for it will become available once there is native support.