On Monday, February 20, 2017 at 11:24:50 AM UTC-8, Shu-Hung You wrote:
> Sorry, I saw that you're already using raco exe and raco distribute.
> So is the problem related to some DLL issue on Windows?
> 
> Best,
> Shu-Hung
> 
> On Mon, Feb 20, 2017 at 1:19 PM, Shu-Hung You
> <shu-hung....@eecs.northwestern.edu> wrote:
> > https://docs.racket-lang.org/raco/exe.html
> > Is raco exe in this page what you want? Just type
> >
> >> raco exe q.rkt
> >
> > And this command will produce a single executable. Now we can now run
> >
> >> ./q
> > q: expects 1 <msg> on the command line, given 0 arguments
> >
> > Best,
> > Shu-Hung
> >
> > On Mon, Feb 20, 2017 at 1:12 PM, lu <luke...@gmail.com> wrote:
> >> Hi all, I have this little toy project[1] to help me learn the language. I 
> >> would like to produce a single portable executable that can be executed 
> >> without reliance on racket installation. `raco distribute` does produce a 
> >> "package" folder. But for small utility tool like this, I would prefer a 
> >> simple standalone executable file rather than a folder, so I can just drop 
> >> it into a directory on `PATH` on the target machine and run it.
> >>
> >> For the start I'm looking at solving this problem for Windows 
> >> specifically, but am also interested in a solution on other systems.
> >>
> >> Thanks!
> >>
> >>
> >> [1]: https://github.com/kflu/q
> >>
> >> --
> >> 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.

No, there's nothing wrong with DLL issue on Windows specifically. It's the way 
how `raco exe` is designed to work.

The executable produced with `raco exe` is not portable to another machine of 
the same OS without Racket installed. More specifically, if you look at the 
distribution `raco distribute` produce, it includes essential dependencies for 
running the application, e.g., the GC lib `libracket3m_a1zjsw.dll`. If you run 
the executable from another machine where Racket isn't installed, you get (at 
least) an error saying that `libracket3m_a1zjsw.dll` cannot be found.

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.


C:\USERS\LU\WORK\RACK\Q
|   q.exe
|
\---lib
    |   libiconv-2.dll
    |   libracket3m_a1zjsw.dll
    |   longdouble.dll
    |
    \---plt
        \---q
            +---collects
            \---exts
                \---ert
                    +---r0
                    |       dh4096.pem
                    |
                    \---r1
                            libeay32.dll
                            ssleay32.dll

-- 
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.

Reply via email to