Le blog de Jean David TECHER, un Réunionnais à Saint-Priest/Lyon

Aller au contenu | Aller au menu | Aller à la recherche


mardi 11 septembre 2018

[MinGW32 Linux Distro] mpv-0.29.0-r29.g48c38f7 for win32 to Download

I've recently used my own MinGW32 Linux Toolchain to generate a quick build for MPV Player for win32 Notice: This time we added mpv-1.dll. Dlls and exe files were compressed using UPX. Be careful that your antivirus returns a false-positive point

mpv was linked to FFmpeg 4.1.dev.r1163.gfae040e

Dependancies for DLLs

Listed below are the packages required for runtime but you may find more dlls in the subfolder bin -- this is pretty normal due to dependancies in my toolchain --
  1. angle-project 2.1.r8420 (git) (static library)
  2. aom 1.0.0.r401.gb01bfcf (git)
  3. bzip2 1.0.6
  4. crossc 1.3.0.r1.g771aad0 (git)
  5. expat 2.2.5
  6. fftw 3.3.7
  7. fontconfig 2.12.6
  8. freetype noharfbuzz 2.8
  9. fribidi 1.0.5
  10. gettext 0.19.8.1
  11. glib 2.54.3
  12. Game Music Emu 0.6.2
  13. gmp 6.1.2
  14. gnutls 3.5.19
  15. graphite2 1.3.11
  16. harfbuzz 1.8.6
  17. icu 57.1
  18. lame 3.100
  19. lcms2 2.9
  20. libarchive 3.3.2
  21. libass-git 0.14.0.r4.g98727c3 (git)
  22. libbluray-git 1.0.2.r33.gf77d22b (git)
  23. libcaca 0.99.beta19
  24. libcdio 2.0.0
  25. libcdio-paranoia 10.2+0.94+2
  26. libdvdcss 1.4.2
  27. libdvdnav 6.0.0
  28. libdvdread 6.0.0
  29. libfdk-aac 0.1.6
  30. libffi 3.2.1
  31. libicbc 2.0.2.r10.g4d0c2ed (git)
  32. libiconv 1.15
  33. libidn2 2.0.5
  34. libjpeg v9
  35. libmfx 1.23.r8.gb93a3ac (git)
  36. libmodplug 0.8.8.5
  37. libogg 1.3.3
  38. libpng 1.6.34
  39. libsamplerate 0.1.9
  40. libsoxr 0.1.3
  41. libtasn1 4.13
  42. libtheora 1.1.1
  43. libunistring 0.9.9
  44. libvorbis 1.3.5
  45. libwebp 0.6.1
  46. libxml2 2.9.8
  47. lua 5.2
  48. lz4 1.8.2
  49. lzo 2.10
  50. nettle 3.4
  51. openal 1.18.2
  52. opencore amr 0.1.5
  53. openjpeg2 2.3.0
  54. opus 1.2.1
  55. p11 kit 0.23.13
  56. pcre 8.41
  57. rubberband 1.8.1
  58. sdl2 2.0.7
  59. shaderc ndk.r12.beta2.r244.g30af9f9 (git)
  60. shine 3.1.1
  61. snappy 1.1.7
  62. speex 1.2.0
  63. twolame 0.3.13
  64. uchardet 0.0.6
  65. vapoursynth R44
  66. vid.stab 1.1.0
  67. vo-amrwbenc 0.1.3
  68. vulkan-loader 1.1.73.0 (static)(static library)
  69. wavpack 5.1.0
  70. x264 snapshot-2018-09-08-2245
  71. x265 2.8
  72. xavs 0.1.55
  73. xvidcore 1.3.5
  74. xz 5.2.3
  75. zimg 2.7.5
  76. zlib 1.2.11

[MinGW32 Linux Distro] List required dll at runtime for any ??.exe (objdump -p ... | grep "DLL Name")

For the time being, I am stil working on maintaining MinGW32 Linux Distro. We have now more than 200 packages.

But if I write this ticket tonight this is because I discovered this usage from objdump with its flag -p while I was on the Internet tonight.

That gave me the idea to write a quick function

david@amdgaming:~$ cat Get_Required_DLL.Sh 
_get_missing_dll_at_runtime ()
{
	my_file="${1}"
	local my_path="/opt/MinGW32/i686-w64-mingw32/bin"

	[ ! -f "${my_file}" ] && { echo "not a regular file!"; exit 1; }

	for file in $(objdump -p ${my_file} |grep "DLL Name"|awk '{print $NF}'|sort);
	do  
		[ -f "${my_path}/${file}" ] && echo "${my_path}/${file}" || echo "# not found: ${file}";
	done
}
So here I just need to source this file
source  Get_Required_DLL.Sh
Here are some examples
  • Looking for required DLLs for upx.exe
    david@amdgaming:~$ _get_missing_dll_at_runtime /opt/MinGW32/i686-w64-mingw32/bin/upx.exe 
    # not found: KERNEL32.dll
    /opt/MinGW32/i686-w64-mingw32/bin/libstdc++-6.dll
    /opt/MinGW32/i686-w64-mingw32/bin/libucl-1.dll
    /opt/MinGW32/i686-w64-mingw32/bin/libwinpthread-1.dll
    # not found: msvcrt.dll
    # not found: USER32.dll
    /opt/MinGW32/i686-w64-mingw32/bin/zlib1.dll
    
  • Looking for required DLLs for mediainfo.exe
    david@amdgaming:~$ _get_missing_dll_at_runtime /opt/MinGW32/i686-w64-mingw32/bin/mediainfo.exe
    # not found: KERNEL32.dll
    /opt/MinGW32/i686-w64-mingw32/bin/libgcc_s_sjlj-1.dll
    /opt/MinGW32/i686-w64-mingw32/bin/libstdc++-6.dll
    # not found: msvcrt.dll
    # not found: SHELL32.dll
    /opt/MinGW32/i686-w64-mingw32/bin/zlib1.dll
    
  • Looking for required DLLs for ocspcheck.exe
    david@amdgaming:~$ _get_missing_dll_at_runtime /opt/MinGW32/i686-w64-mingw32/bin/ocspcheck.exe
    # not found: KERNEL32.dll
    /opt/MinGW32/i686-w64-mingw32/bin/libcrypto-42.dll
    /opt/MinGW32/i686-w64-mingw32/bin/libssp-0.dll
    /opt/MinGW32/i686-w64-mingw32/bin/libtls-16.dll
    # not found: msvcrt.dll
    # not found: WS2_32.dll
    
That's a pretty cool function and should make life easier. Later if I want to share some packages then I just need to compress them using upx.exe through wine (I have upx.exe installed in my toolchain)
wineconsole --backend=curses upx.exe --best --strip-relocs=0 *.dll *.exe
Of course there might be some exceptions and some tests need to be performed after that step before sharing any package.