Hi,

As I promised some updates below.

Am 02.11.23 um 18:33 schrieb Johannes Thoma via Cygwin:
[...]
Interesting.
But how (from a developers perspective) do you link cygwin1.dll
statically into a binary?

I would build my own cygwin1.lib or cygwin1.a and statically link
against it.

If you do work out how to do this, patches would be welcome...

You are right it is far from trivial. I am working on it, not
sure now if it will be possible or how long it takes (my main
project is WinDRBD, so unfortunately I cannot spend full time on
getting static linking work). Right now, I can compile cygwin on my own
and digged a little bit in the program startup code (lib subdir),
I will keep you updated once I go along.


I can link a simple hello world program (which uses write(2) to
produce output to test the POSIX variant) with something like:

LDFLAGS=-L. -lcygwin-static -lcygserver -lntdll -lkernel32 -lc -lg -lm -lgcc 
-static -nodefaultlibs

and copiing the newlib libc, libm and other libraries from the
build. The ntdll and kernel32 libs are from a mingw-w64 installation.

the cygwin-static library contains every .o file in the winsup/cygwin
build directory except: lib/libcmain.o and ctype.o (for now had to
patch __set_ctype out of cygwin and take the newlib version, maybe
I can fix that somehow).

Right now it links and produces a (22 Megabytes) EXE binary, however
it crashes in the thread_allocator C++ class (most likely because the
matching constructor is not called before that) this will be the
next thing to fix.

Ok have a great weekend everybody and I will get back once I continue
on the static linking feature.

Best regards,

- Johannes

--
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

Reply via email to