started getting stuff to compile for ARM

There were lots of places where the ARM compiler is pickier about
alignment and the externals stuff had to be reworked to use the cross
compiler for everything.

The main issues left are the lack of opencv and the x86 asm.
diff --git a/aos/atom_code/configuration.cc b/aos/atom_code/configuration.cc
index a5dd4ee..2d6dab8 100644
--- a/aos/atom_code/configuration.cc
+++ b/aos/atom_code/configuration.cc
@@ -35,7 +35,8 @@
     if (addrs->ifa_addr->sa_family == AF_INET) {
       if (strcmp(kAtomNetInterface, addrs->ifa_name) == 0) {
         static const in_addr r =
-            reinterpret_cast<sockaddr_in *>(addrs->ifa_addr)->sin_addr;
+            reinterpret_cast<sockaddr_in *>(__builtin_assume_aligned(
+                addrs->ifa_addr, alignof(sockaddr_in)))->sin_addr;
         return &r;
       }
     }