Need advice on how to include OpenSSL statically in linux/windows crossbuild DLL
Benedikt Hallinger <beni-RPPEtnDHq6RrovVCs/[email protected]> Tue, 05 Jan 2021 23:20:17 +0100
| Newsgroups | gmane.comp.gnu.mingw.user |
|---|---|
| Message-ID | <[email protected]> |
--=_f74cc5b7e738ccec11292b40df78db07 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed Hello, in my project fgcom-mumble (https://github.com/hbeni/fgcom-mumble) i build a windows DLL from linux. This all wents good so far and the DLL looks good when i do not include SSL. When i do, the compilation succeeds, but two DLL entries are reported missing from the final generated DLL, and i really struggle to find out why. The missing bits are OpenSSLs libcrypto and libssl, against which i link statically (i try to at least). I have seen this with https://github.com/lucasg/Dependencies tool. The makefile generates this command: x86_64-w64-mingw32-g++-posix -fPIC --shared -DMINGW_WIN64 -o fgcom-mumble.dll lib/io_plugin.cpp lib/radio_model.cpp lib/audio.cpp lib/io_UDPServer.cpp lib/io_UDPClient.cpp lib/garbage_collector.cpp fgcom-mumble.cpp -L./lib/openssl/ -static -lssl.dll -lcrypto.dll -DSSLFLAGS -lws2_32 -lcrypt32 -static-libgcc -static-libstdc++ -I. -I./lib -g3 -DDEBUG -I./lib/openssl/include/ -Wl,-Bstatic -lstdc++ -lpthread -lws2_32 ./lib/openssl/libcrypto.dll.a and ./lib/openssl/libssl.dll.a are there and resolved (if i rename them, the build fails). My impression was that the "static" switch should have included the dlls into my archive. What do i do wrong here? I already googled and tried different things several days now (some -Wl liker flags like static etc), but to no avail. Please be aware that I'm fairly new to C/C++ and cross compiling. Thank you very much in advance, Beni --=_f74cc5b7e738ccec11292b40df78db07 Content-Transfer-Encoding: base64 Content-Type: image/png; name="Screenshot 2021-01-05 215355.png" Content-Disposition: attachment; filename="Screenshot 2021-01-05 215355.png"; size=13625 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 YII= --=_f74cc5b7e738ccec11292b40df78db07 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTWluR1ctVXNl cnMgbWFpbGluZyBsaXN0Ck1pbkdXLVVzZXJzQGxpc3RzLm9zZG4ubWUKClRoaXMgbGlzdCBvYnNl cnZlcyB0aGUgUG9zdGluZyBFdGlxdWV0dGUsIGFzIGRlc2NyaWJlZCBhdCBodHRwczovL21pbmd3 Lm9zZG4uaW8vaW5kZXguaHRtbD9wYWdlPW1haWxpbmcuaHRtbCNsaXN0LWV0aXF1ZXR0ZS4KV2Ug YXNrIHRoYXQgeW91IGJlIHBvbGl0ZSBhbmQgZG8gdGhlIHNhbWUuICBEaXNyZWdhcmQgZm9yIHRo ZSBsaXN0IGV0aXF1ZXR0ZSBtYXkgY2F1c2UgeW91ciBhY2NvdW50IHRvIGJlIG1vZGVyYXRlZC4K Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCllvdSBtYXkg Y2hhbmdlIHlvdXIgTWluR1cgQWNjb3VudCBPcHRpb25zIG9yIHVuc3Vic2NyaWJlIGF0OgpodHRw czovL2xpc3RzLm9zZG4ubWUvbWFpbG1hbi9saXN0aW5mby9taW5ndy11c2VycwpBbHNvOiBtYWls dG86bWluZ3ctdXNlcnMtcmVxdWVzdEBsaXN0cy5vc2RuLm1lP3N1YmplY3Q9dW5zdWJzY3JpYmU= --=_f74cc5b7e738ccec11292b40df78db07--