Welcome to Linux builds closed beta

We have been working on Linux builds. You still need to use macOS or Windows to build, but we can now output builds that should run on Linux. This is a closed beta. Please give it a try if you have access to Linux to test builds on and report issues here.

To get it rolling, type in command line:

macOS: defaults write com.coronalabs.Corona_Simulator enableLinuxBuild -bool YES

Windows: reg add "HKEY_CURRENT_USER\software\ansca corona\corona simulator\preferences" /v ShowLinuxBuild /t reg_dword /f /d 1

You should use daily build 2018.3350 or later with the latest daily build recommended.

This will output both a .tar.gz and .deb package for generic x86-64 Linux platforms.


This is actually genuinely exciting.

I’m stuck using Windows at the moment, and have been for a few months now frustratingly (long story), but I’ve actually used Gentoo GNU/Linux exclusively for about 15 years and absolutely can’t wait to get back into my Gentoo environment. As soon as I’m back in there, I’ll do some testing for sure.

It would be brilliant to one day run the Corona simulator within GNU/Linux too, but just being able to compile for it is in itself a major leap forwards. Thanks for working on this!

This is really great news. It would be a perfect match for us, if this would also (in the final version) support Linux on ARM, i.e. Raspberry Pi, etc. Are there any plans for that?

Hi @marcar, we are considering other architectures like ARM. We think Raspberry Pi could be a great platform to provide support for. Creating new platforms are time-consuming and I don’t know when we will get to this, but it’s something we want to do.


This is pretty cool… thanks Rob and Corona Team!

I am assuming documentation updates will follow soon?  It’s a bit trial and error for some things, other things more difficult to know what is needed.  For example:

What’s returned in system.getInfo(“platform”), etc.

Any specific build.settings “things” needed in order to utilize excludeFiles, plugins, etc tables appropriately

I think my game(s) will compile successfully if this info is known… right now I’m getting errors when I attempt to build due to this.


Yes, documentation updates will come later.

system.getInfo(“platform”) should return “linux”.

Currently, there are no specific “linux” build.setting values to set. I’m not 100% sure if we are processing the “window” table (used my macOS, Win32 and HTML5 to control window width, height, full screen, windowed, window name, etc.) yet. In theory, excludeFiles should work, but don’t hold me to that.

Plugins are not supported yet. Hopefully, there will be some plugin support coming soon. Now I do want to be 100% clear here. Plugins that depend on third-party SDK’s like all ad providers, analytics providers, etc. are likely never going to be available because those SDK’s just don’t exist for Linux and there isn’t much in financial incentives to get them to make Linux SDKs. What you’re likely going to  see is plugins like bit, zip, etc. those that are pure C++ and Lua based plugins being made available. Likewise, there may be some Linux specific plugins created, sort of like we have HTML5 specific plugins, but I can’t initially think what they might ben.

In porting one of my games, I’ve had to do things like I did here for GameAnalytics:

myData.GAgameKey = nil myData.gameanalytics = nil if myData.platform ~= "ios" or myData.platform ~= "android" then return end myData.gameanalytics = require("plugin.gameanalytics\_v2") if "ios" == myData.platform then myData.GAgameKey = "iOS key goes here" myData.GAgameSecret = "iOS secret goes here" elseif "android" == myData.platform then myData.GAgameKey = "Android key goes here" myData.GAgameSecret = "Android secret goes here" end

And when I need to use GA, I do:

 if myData.gameanalytics then myData.gameanalytics.addProgressionEvent { progressionStatus = "Fail", progression01 = string.format("campaign%02d", myData.settings.currentCampaign), progression02 = string.format("stage%02d", myData.currentLevel), } end

I basically store the handle to the plugin in my fake global table. If it’s nil, I don’t do anything. If it’s been initialized then I can call it.


Thanks for the clarification Rob… this does look promising, and I will play around a bit more.

For plugins, I do understand what you are saying, and I did expect that those types of plugins would not be available.  I have a few plugins in the Marketplace (Data Cabinet, Language Cabinet) that are Lua Plugins and don’t rely on third-parties, and I would hope/expect those will work.



just found this, really good news!

I gave it a try with latest daily build (3434). I intended to try in a 64bit Ubuntu system and a 32 bit pure Debian.

In Debian 32b, I knew it wouldn’t run once I saw the output from the simulator, but the package installs correctly.

In Ubuntu 64b:

  • installing the .deb pack, using the package manager, never ended, never saw the file in the /usr/bin,

  • extracting the .tar.gz and then running the program, started complaining about missing packages.

Installed libopenal, then libpng, then libpng16, but at libwebkitgtk-3.0 there were a lot of missing dependencies not found in the repositories, so I had to stop there.

Not sure if this is of any help.

I’m updating the Ubuntu right now, and can install a 64bit Debian. I volunteer to make any tests.

Best regards,


@jaime9 Thank you for the testing.

I guess we need to add an install-dependencies.sh in .tar.gz

I’ve been testing it on Ubuntu 18.04.1. I did have to install a few dependencies but once installed, the apps I’ve tested are working pretty well. 


sudo apt-get install libopenal1 libwebkitgtk-3.0-0

This installs dependencies which enough for fresh Ubuntu 18.04 LTS

Hi again - updated my ubuntu to current 18.04.

Things improved!

.deb package installed correctly, dependencies also.

When my app is executed, however, I get a core dumped:

(Dragonfly:8948): Gtk-CRITICAL \*\*: 20:22:05.032: gtk\_window\_resize: assertion 'width \> 0' failed Checking /usr/bin/resource.car Checking /usr/bin/main.lua Checking /usr/share/corona/bin/resource.car Checking /usr/share/corona/bin/main.lua Checking /usr/bin/welcomescreen/main.lua Failed to find app Rtt\_ASSERT [Rtt::CoronaAppContext::CoronaAppContext(const char\*)] at ../../platform/linux/Rtt\_LinuxContext.cpp:478 (0) sandbox: assets: Copyright (C) 2009-2018 C o r o n a L a b s I n c . Version: 3.0.0 Build: 2018.3434 WARNING: Cannot create path for resource file 'build.settings (/usr/bin/build.settings)'. File does not exist. WARNING: Cannot create path for resource file 'resource.car (/usr/bin/resource.car)'. File does not exist. LUA\_PATH = /?.lua;/?.lua; LUA\_CPATH = ./?.so;/?.so; Platform: Linux / Lua / 1.0 / SVGA3D; build: RELEASE; LLVM; / 3.0 Mesa 18.0.5 / 2018.3434 / en\_US | US | en\_US | en Rtt\_ASSERT [Rtt::Archive::Archive(Rtt\_Allocator&, const char\*)] at ../../librtt/Rtt\_Archive.cpp:1029 (result \>= 0) Segmentation fault (core dumped) jaime@ubindi:~$ uname -a Linux ubindi 4.15.0-39-generic #42-Ubuntu SMP Tue Oct 23 15:48:01 UTC 2018 x86\_64 x86\_64 x86\_64 GNU/Linux jaime@ubindi:~$ Other details from the "problem report" window (can't copy and paste these) say it is a SIGSEGV in \_\_memcmp\_avx2\_movbe()

Mind you this is a full-fledged app, not a test one. 

Let me know how can I help.

… and thanks, having Corona for Linux is amazing! :slight_smile:

Does it work if you use the .tar.gz file instead?


Next daily build will fix the issue in .deb package. To reinstall app one can to use the following:

sudo apt purge <my-app-name>     ( e.g. sudo apt purge Clock )

sudo apt install <path-to-my-deb-file>    ( e.g. sudo apt install ./Clock-x86-64-1.0.0.deb )

Re: Rob:

the tar.gz file works! Almost perfectly! Just got a bunch of these warnings (I guess related to my native text input boxes):

LinuxTextBoxObject: ValueForKey 'inputType' is not implememnted LinuxTextBoxObject: SetValueForKey 'inputType' is not implememnted LinuxVideoObject is not implememnted LinuxTextBoxObject: SetValueForKey 'placeholder' is not implememnted LinuxTextBoxObject: ValueForKey 'inputType' is not implememnted

The inputs work well as far as I can see, only the hints (text displayed when the field is empty) are missing.

And the switch widgets look odd: coronalinux-1.png

Re: vitaly1:

thanks for the tips about uninstalling - and I look forward to the next daily build.

Thank you!!

Can you try and build the Widget sample app and see how it behaves?


Just did, I made a collage of all places I found something not perfect:


Hope this helps.

Should I create new topics? Or post here?

I asked a my players to test linux build:

not a bug, but a restriction for deb package.

“Hey, yeah that ubuntu archive worked for me, with sound! The deb package however has failed to parse a silly space in the package name.”

parsing file ‘/var/lib/dpkg/tmp.ci/control’ near line 1: invalid package name (character ’ ’ not allowed (only letters, digits and characters ‘-+._’))


I have asked for some screenshots and etc

We create specific forums so that you can ask specific questions and have answers focused on your question. This thread is about the announcement of the closed beta builds and your question isn’t about that announcement, so creating a new thread would be the proper thing to do.

For as highly requested this feature was, the amount of feedback we have gotten has been pretty minimal. I know more people are interested in running the simulator on Linux, which we’ve started, but perhaps with Corona now being open source, some people who are Linux based might want to take up this issue.


No surprises there really…