On Monday, February 20, 2017 at 12:33:46 PM UTC-7, lu wrote: > In fact, I'm wondering if `raco distribute` or `raco exe` is flexible enough > to produce a statically linked executable where all the necessary dlls are > incorporated.
I believe this is possible, but probably not worth the effort considering you mentioned this as a toy project. To my understanding (and, please, someone correct me if I am wrong about this), `raco exe` will just compile your file to Racket bytecode, then intelligently mash it together with the racket executable you have installed. If the racket executable you have installed requires loading an external dll, then so will the executable created from `raco exe`. If the racket executable you have installed does NOT require an external dll, then neither will your executable generated from `raco exe`. The default Windows installer distributed for racket has the core of the language linked as a separate `libracket` dll, so `raco exe` follows suit. Partially this is an issue at the OS and linker level; after compilation, dynamically linked libraries can't easily be transformed to statically linked libraries and vice-versa. It is almost universally a compile time choice. To be clear, I am talking about code compiled to native machine bytecode tailored to a particular operating system from a source language like C, not compiled Racket bytecode. Which brings me to my next point. To make this work, you would pretty much need to compile the Racket executable from source and use whatever compile flags are required to build everything statically into the main executable. Then `raco exe` should work as expected using your custom compiled version of Racket. This is a huge amount of work for a toy project. So, like I said, it probably isn't really worth it. It's ultimately simpler to just use `raco distribute` and send the whole bundle to someone else. Yes, it is a bit clumsy for something so small, but it should at least work. -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.