If you use msys or msys2, you can use objdump to find out which DLL dependencies you need.
For example, if you run:
objdump -p *.exe *.dll | grep 'DLL Name:'
This gives you a list of DLLs that your EXE is dependent on. Search your system for the DLLs (if your program runs, they must be somewhere on your system). Then copy those DLLs into the current directory and run the same command again. The list gets longer: the new DLLs also have dependencies that you have to include as well. Keep running this until the list of DLLs no longer changes.
I write bash scripts for myself that contain this snippet:
for i in $(objdump -p *.exe *.dll | grep 'DLL Name:' | sort | uniq | sed "s/\s*DLL Name: //")
if [ -e $i ]
echo "FOUND: $i"
echo "MISSING: $i"
There are certain DLL dependencies that you can assume are standard on windows, they tend to be all caps filenames, and they are in C:\Windows
Finally, pay attention to whether you have 32-bit or 64-bit exe/dlls. On Msys you can check by running the file command. That will report them as PE32 (32 bit) or PE32+ (64 bit)