See the comparison of the linux kernel and libaio struct iocb definitions below.
from linux/aio_abi.h
struct iocb { <snip> __u64 aio_buf; __u64 aio_nbytes; __s64 aio_offset; <snip> }
from libaio.h
struct io_iocb_vector { const struct iovec *vec; int nr; long long offset; }; struct iocb { <snip> union { struct io_iocb_common c; struct io_iocb_vector v; struct io_iocb_poll poll; struct io_iocb_sockaddr saddr; } u;
The above definitions are not compatible on 32b systems.
This was fixed in commit a1bef69482289eb8b35608f1a3a4b36d7fb627e7, so it can be closed now.