La migración o compilación cruzada, en teoría es posible (yo lo he hecho), pero, tal y como dices, siempre que uses componentes "estándar".
Una MUY buena idea es usar condicionales para que si hay algún tipo de diferencia, Lazarus lo compile usando una opción u otra.
Respecto a tu segunda pregunta, la respuesta es la utilidad ldd, que se usa tal que así...
$ ldd <ejecutable>
Aquí tienes la referencia.