www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - How package Dlang in a standalone portable executable?

reply Marcone <marcone email.com> writes:
I need package Dlang in a standalone portable executable.
I need packcages all dependencies, dlls, files, etc in one 
executable file.
Mar 26 2020
parent WebFreak001 <d.forum webfreak.org> writes:
On Thursday, 26 March 2020 at 23:19:20 UTC, Marcone wrote:
 I need package Dlang in a standalone portable executable.
 I need packcages all dependencies, dlls, files, etc in one 
 executable file.
by default if you use dub it will statically link phobos and druntime into the executable, so you have no external dependencies other than libc / msvc++ runtime redist. This might not be the case depending on your installation though like for example in LDC the config might default to using a shared ldc phobos runtime as this is the case for example on ArchLinux. If you use any shared libraries (derelict/bindbc) you will want to switch them to statically link. Otherwise libraries on dub are statically linked by default. If you want to compile in your files into the executable, you can use `import("filename.txt")` in your code instead of reading from a file. The compiler will read the file and embed the contents in where it appends the resources to the executable and inside has code to read from it at runtime. If you want to be able to change it after compiling, on linux you would probably want to use something like AppImages or flatpaks and on OSX I think they have application bundles for this. The system dependencies (libc / msvc++ runtime and win32 api) you will still want the user to install them. This ensures compatibility with the OS, especially on Windows. For the msvc++ runtime you probably want to include their installer in your installer. You will have to read up on how that works though. But with D you can basically just take your executable file and distribute it in a lot of default cases. Best to try it out on PCs which have freshly installed operating systems though.
Mar 27 2020