How to build a DLL without cygwin DLL dependencies

Tony Kelman tony@kelman.net
Wed May 29 20:18:00 GMT 2019


> So, I downloaded "i686-w64-mingw32-gcc" from the setup packages and ran,
> i686-w64-mingw32-gcc -shared sqlite3.c -o sqlite3.dll,
> but it still wants me to add other DLLs.  I just want to drop the
> sqlite3.dll just created in another spot and run a tool using that
> without need of any other DLL. I know I can do it with MinGW, but I
> don't want to install two systems on my computer.  I know I am missing
> something because I know other folks have done it before.
> I duckduckgo'ed some answers, but have not found anything but
> "use MinGW".  Is this even possible with cygwin and its packages?

You just did "use MinGW with cygwin and its packages." MinGW is the
compiler triple you just used via a cross compiler. The end user
system won't need cygwin, and it won't need a compiler. Would be good
if you were more specific about what "it" you're referring to and which
"other DLLs" you mean. I just tried what you described:

curl -L https://www.sqlite.org/2019/sqlite-autoconf-3280000.tar.gz | tar -xz
cd sqlite-autoconf-3280000
i686-w64-mingw32-gcc -shared sqlite3.c -o sqlite3.dll

and dependency walker is telling me there are a few dependencies on
libgcc_s_sjlj-1.dll for __divdi3 etc. That's a compiler runtime dll
and you can avoid the issue by building a 64 bit dll, or in 32 bit via

i686-w64-mingw32-gcc -shared -static-libgcc sqlite3.c -o sqlite3.dll

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



More information about the Cygwin mailing list