[Date Prev][Date Next] [Chronological] [Thread] [Top]

(ITS#8034) lmdb-0.9.14 | Undefined symbols for architecture ppc: "_posix_memalign" referenced from _mdb_env_copyfd2 | ld: symbol(s) not found for architecture ppc



Full_Name: Daniel Ibn Zayd
Version: openldap-2.4.40-r3
OS: PPC
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (166.84.1.2)


This is a followup to a previous ticket. Based on what I learned from that, I
went ahead and tried to install the latest openldap on Gentoo Prefix. It pulls
in lmdb-0.9.14 which I understand now to be the preferred database backend over
db, for example. I successfully fixed one PPC error, replacing -soname with
-install_name (ld throws an error here), but I am left with an error having to
do with _posix-memalign:

Undefined symbols for architecture ppc:
  "_posix_memalign", referenced from:
      _mdb_env_copyfd2 in mdb.o
ld: symbol(s) not found for architecture ppc
collect2: ld returned 1 exit status

Over at MacPorts, they are recommending disabling mdb, but this doesn't seem to
be a real fix:

http://trac.macports.org/changeset/130560

The better fix I think would be to test for _posix_memalign, and fall back to
valloc on older Macs.

In terms of C preprocessor macros, I believe "powerpc" and "PPC" to be
drerecated definitions; "__ppc__" and "__PPC__" being valid.

(Reference: http://nadeausoftware.com/articles/2012/02/c_c_tip_how_detect_processor_type_using_compiler_predefined_macros
)

Thank you in advance for your time.