On Thu, Mar 8, 2012 at 21:30, chandrashekaran kannan
<[email protected]> wrote:
> When the exe file is run
> on machines which do not have C compilers installed on them, it throws an
> error hinting libgcc_s_dw2-1.dll is not found.
> C:\temp\objdump -ax sample.exe | find "DLL"
> ...
> DLL Name: libgcc_s_dw2-1.dll
That's the problem: the packed executable (actually a copy of
myldr\boot.exe with
some stuff appended) has been linked with libgcc*.dll.
We don't do that on purpose, the MingW (GCC) toolchain does that implicitly
(under certain conditions which seem to proliferate with any new
version of GCC).
The only way to solve the problem is to link statically with libgcc*.
Please try the following:
- find the following lines in myldr\Makefile.PL in the unpacked
PAR-Packer tarball
$boot_exe: boot$o
\$(CC) boot$o \$(STATIC_LDFLAGS) $res $out$boot_exe_link
$mt_cmd
and change them to
$boot_exe: boot$o
\$(CC) boot$o \$(STATIC_LDFLAGS) -static-libgcc $res $out$boot_exe_link
$mt_cmd
- rebuild and reinstall PAR::Packer
dmake clean
perl Makefile.PL
dmake
dmake install
- re-pack your script and try it out
Cheers, Roderich