From: <fa...@gr...> - 2011-01-14 08:24:51
|
Dear list, I'd like to rebuild some of Msys's GNU tools (e.g. grep) as statically linked standalone binaries in Msys using Mingw. The reason is that I want to use them as my own private replacement for the (outdated and unmaintained) unxutils, without having to install the entire msys suite. I am only going to compile GPL-compliant software without redistributing it. I have tried some approaches (e.g. rename the libmsys-1.0.dll.a to libmsys-1.0.a, add -static to LDFLAGS, add libmsys1-0.a to LDLIBS, etc.) but whatever I do I end up with binaries that are dynamically linked against msys-1.0.dll and thus not standalone. What do I have to do to link binaries to a static variant of the msys-1.0 library or isn't it possible at all? Thank you very much in advance for your replies. Best Regards, Fabian |
From: Erik T. <eh....@gm...> - 2011-01-14 12:21:23
|
2011/1/14 <fa...@gr...> > Dear list, > > I'd like to rebuild some of Msys's GNU tools (e.g. grep) as statically > linked standalone binaries in Msys using Mingw. The reason is that I want > to use them as my own private replacement for the (outdated and > unmaintained) unxutils, without having to install the entire msys suite. I > am only going to compile GPL-compliant software without redistributing it. > > I have tried some approaches (e.g. rename the libmsys-1.0.dll.a to > libmsys-1.0.a, add -static to LDFLAGS, add libmsys1-0.a to LDLIBS, etc.) > but whatever I do I end up with binaries that are dynamically linked > against msys-1.0.dll and thus not standalone. > > What do I have to do to link binaries to a static variant of the msys-1.0 > library or isn't it possible at all? > You would have to have a static version of the runtime library. Simply renaming the import library for the dynamic version won't change the contents of the file. I haven't looked, but I think the sources for the MSYS runtime library are available, so you could try building a static version yourself, and then use that in linking, with the -static flag, to produce a stand-alone binary. (Disclaimer: I haven't done anything like this myself, and I'm no expert on the matter, so it's possible that I am overlooking something which would make this approach impossible.) Erik. |
From: Fabian G. <fa...@gr...> - 2011-01-17 09:39:06
|
Am 14.01.2011 13:21, schrieb Erik Toussaint: > You would have to have a static version of the runtime library. Simply > renaming the import library for the dynamic version won't change the > contents of the file. I already suspected that, but from the Linux world I know there are two types of libraries, the dynamic one (with the .so smylink) and the static one. And since bin/msys-1.0.dll is clearly the dynamic one, I believed the other one had to be the static. Am 14.01.2011 14:10, schrieb Earnie: > It isn't possible. The MSYS dll depends on it being a dll. Okay, that's the bitter truth, although I do not understand this requirement technically (I have only heard of the reverse problem, i.e. converting a static library into a dynamic one, which means turning it into position-independent code and supporting REENTRANT, etc.) Am 14.01.2011 14:30, schrieb Greg Chicares: > Perhaps 'gnu-win32' would fit your needs better. This page: > http://gnuwin32.sourceforge.net/ > announces a new release of one program within the last three weeks. I already know this project, but it does also contain only dynamically linked binaries and a whole bunch of shared libs that I don't want to carry around. Furthermore, their unix compatibility layer library libgw32c (i.e. "their" msys-1.0.dll) does not work out of the box for me, see <https://sourceforge.net/tracker/?func=detail&atid=379173&aid=3157170&group_id=23617>. I'll give it another try, given the above confirmation that what I want to achieve is impossible with MSYS. > A very few gnu utilities can be built natively for msw; 'make' is a > notable example. AFAIK, make itself is portable, but strictly does require a ported sh as well (else it falls back to temporary batch files which may result in unexpected behaviour). At least that's what I've learned from the unxutils home page. unxutils, btw, uses just another unix compatibility layer library "downhill" from 1994, but I didn't even try to recompile from their sources, yet... Thank you all for your replies! Best Regards, Fabian |
From: Earnie <ea...@us...> - 2011-01-14 13:11:07
|
fa...@gr... wrote: > > What do I have to do to link binaries to a static variant of the msys-1.0 > library or isn't it possible at all? > It isn't possible. The MSYS dll depends on it being a dll. -- Earnie -- http://www.for-my-kids.com |
From: Greg C. <gch...@sb...> - 2011-01-14 13:56:53
|
On 2011-01-14 08:25Z, fa...@gr... wrote: > > I'd like to rebuild some of Msys's GNU tools (e.g. grep) as statically > linked standalone binaries in Msys using Mingw. The reason is that I want > to use them as my own private replacement for the (outdated and > unmaintained) unxutils, without having to install the entire msys suite. I > am only going to compile GPL-compliant software without redistributing it. You could install MSYS and delete the parts you don't use. It won't be exactly the same as unxutils, which provides native ports. For example, in msw 'foo /c' would mean "run program foo with option c", but to MSYS '/c' is a POSIX mount that must be translated to "C:". Perhaps 'gnu-win32' would fit your needs better. This page: http://gnuwin32.sourceforge.net/ announces a new release of one program within the last three weeks. A very few gnu utilities can be built natively for msw; 'make' is a notable example. > What do I have to do to link binaries to a static variant of the msys-1.0 > library or isn't it possible at all? It's difficult enough that nobody has ever done it. See: http://cygwin.com/ml/cygwin/2000-06/msg00756.html http://cygwin.com/faq/faq-nochunks.html#faq.programming.static-linking bearing in mind that MSYS is a fork of Cygwin. |