You can check if executable is static by using
arm-unknown-linux-gnueabi-readelf --relocas.
The fact that the archive has a lot of files does not mean the openvpn
is not static.
Well, I don't really know what you understand "static linking" to be,
but to me it means that all external functions, subroutines etc, which
are resolved at compile-time, are copied into a target application by
the gcc linker, producing an object file and then a stand-alone
executable ("stand-alone" being the key word here!). Your build script,
evidently, does not do that and I already pointed out the changes you
may need to make to allow a *stand-alone* openvpn executable to be produced.
If you believe "static linking" to mean something else from what I
described above, please enlighten us all!
If I have to deploy additional files alongside openvpn, then I may as
well have it dynamically linked and deploy the entire dependencies chain
(using ldd as guidance). The reason I can't/won't do that is because to
satisfy this, I have to 1) spend a lot of my time digging out
dependencies, without the guarantee that it would ever work, and 2) as
my rootfs is read-only, whatever I do it will be instantly lost on
reboot, so the whole exercise would be utterly pointless.
Anyway it is working at my side, and it is a standard process.
You can adjust the script for your needs.
I already did, you may as well do the same and make the changes I
suggested earlier for the "really_static" option to really work,
because, as it stands, "really_static" isn't so as openvpn still needs
external files to operate.