Reason being, I suspect, that the lzo static libraries cannot be found (strange 
as the compilation succeeded).

I need tmp/openvpn/config.log
Better to have the complete build output...
This was done in mock environment (both the rpm and "normal" build). When I did this from outside, using a specific arm cross-toolchain, the build succeeded, *but* the package created does not contain static openvpn - it still needs all of its dependencies (though them being statically-build components, like lzo etc). The output produced from your build script seems to be an archive, presumably containing all the files openvpn needs, spread across multiple directories (I am also not sure whether openvpn produced in this way won't need its libgc library).

I suspect all I need to do is to unpack this archive to the target, but that won't do me any good at all, because my root system on the android device is squashfs (read-only) and whatever I do with it (provided I succeed) will be destroyed the next time I reboot the device. What I need is a single openvpn executable, so that I could just place it somewhere in my path and fire it off.

I was able to slightly amend the running order of openvpn compilation process and succeeded in building a single, statically-linked openvpn executable for my android device.

The error your build script has with this is that the last statement which links all objects into the openvpn executable should contain "-static", "-static-libgcc" along with "-ldl" - currently you don't have that and the openvpn executable produced is about 700kB, still needing its static libraries at the very least.

When openvpn is statically linked in the way I just described, the file produced is about 7MB, coming down to about 1.7MB after stripping. Copying this single file to my android device (and briefly testing it) seems to have done the trick.

One drawback from this, which is valid for *all* statically-linked executables in this way, is that there are some arch-dependent functions, like "gethostbyname", which are implemented, possibly in a different way in different environments, hence when I statically link and produce one single monolithic executable in such a way I get a warning from the linker, but since I am not likely to use such functions, I think there is nothing to worry about.

Reply via email to