I am trying to use a slapd BDB database created on a 32-bit intel
system on a 64-bit (amd64/EMT64) system. Running slapcat on the
database works fine, but when the server is started, ldapsearch is
unable to find anything.

I understand that there are architectural differences between a 32-
bit and 64-bit systems, but I don't think Berkeley DB have any
problems with having its data being interchanged between the platforms.

We are running OpenLDAP in a distributed environment where every
server has a local copy of the LDAP database for performance and
reliability reasons. The database is 6 GB, so it is non-trivial
export it to LDIF and import it again on the 64-bit systems. (It
takes way too long).

I am setting up one server to just be a spare LDAP slave so we
easilly can take it down and copy the database to any new system
added to the cluster without causing any downtime anywhere. But this
is not possible as long as I cannot use the same database on 32-bit
and 64-bit systems.

Would it be possible to make this work at all?

Could this be caused by a platform-dependent variable type being used
somewhere, rather than a fixed sized variable type, making slapd
interpret the same data diffrently on different platforms?

Are you using the same binary on both machines? If it's
32bit-compiled slapd/bdb, then I don't think you would have any
problems based on the underlying architecture. BDB does have an
endian-independent option, but I don't think you're running into that.
Maybe you just have to reindex/recover after the copy.

And you can definitely add new replicas without causing any downtime
by using the strategy you're suggesting- even using slapcat/slapadd.