3

I'm getting the same problem expressed here

Failing to build PostGIS on OS X 10.7 Lion

But in Mac OS X Snow Leopard. Things I have checked include:

  • PostgreSQL compiled to several architectures. I used the binary from http://www.postgresql.org/download/macosx/, and tested the dynlib objects with the tool file
  • PROJ and GEOS compiled for i386 and x86_64. I used the frameworks from http://www.kyngchaos.com
  • GDAL compiled from sources following KyngChaos instructions. I compiled it instead of using the provided framework because I'm a GDAL developer, and I'm going to work with it.
  • Trying to compile PostGIS, because I'm a PostGIS developer too, and I don't want to use the binaries. It has been configured correctly. I used this: https://gist.github.com/2002495

But I'm still getting the error: ld: symbol(s) not found for architecture i386

Other things I've tried:

  • Compile ONLY for arch i386. Not working. PostgreSQL expects PostGIS compiled for both architectures. I get the error ld: symbol(s) not found for architecture x86_64.
  • Compile ONLY for arch x86_64. Not working, for the same reason. I get the error ld: symbol(s) not found for architecture i386

I could provide configure and makefile logs, if needed, but the problem is this. It's a problem known in PostGIS lists, but I still haven't found a solution...

Thanks in advance, and best regards

4
  • Maybe you should add a link to the problem as expressed on the PostGIS mailing lists ...
    – Stev_k
    Commented Mar 9, 2012 at 11:44
  • I solved the problem, but here the link to my message in the postgis-devel list: postgis.refractions.net/pipermail/postgis-devel/2012-March/… Commented Mar 9, 2012 at 15:58
  • Do you really need PostGIS as a fat binary? If it is just for use on one Mac (i.e. you are not distributing binaries to other machines), save yourself a dumptruckload of pain and just build everything as x86_64. A package manager such a Homebrew or MacPorts can also help get things installed.
    – Sharpie
    Commented Mar 9, 2012 at 17:55
  • Yes, it's only for me. I could compile only for x86_64. I'm probably too lazy, because I followed instructions that compile for both archs. Thanks for the suggestion! Commented Mar 11, 2012 at 22:36

1 Answer 1

4

Build for both and only exclude powerpc binaries.

 ARCHFLAGS="-arch i386 -arch x86_64" ./configure
 ARCHFLAGS="-arch i386 -arch x86_64" ./make

But honestly, if you are already in the Kyngchaos realm with GEOS and proj.4, then just grab his PostgreSQL/PostGIS binaries, too.

5
  • Thanks for the tip. Now I'm getting a different error: ar: libpgcommon.a is a fat file (use libtool(1) or lipo(1) and ar(1) on it) ar: libpgcommon.a: Inappropriate file type or format. I'd use the binaries, but the point is I'm a GDAL/PostGIS developer, and I need to compile both libraries by myself. Commented Mar 9, 2012 at 8:01
  • I finally solved the problem compiling PostgreSQL using -arch i386 -arch x86_64. Commented Mar 9, 2012 at 15:57
  • Sorry, I'm probably misunderstanding your answer, but your suggestion was to compile PostGIS with those flags. My solution was to compile PostgreSQL, a prerequisite, using those flags too, instead of using a precompiled version of PostgreSQL. Anyway, I'll mark your answer as valid. Commented Mar 11, 2012 at 22:33
  • Any binary that you will link against must match the architecture. So in your case client-postgresql/proj/geos/gdal/postgis/etc must match. When in doubt, use the file <library_name> command. Commented Mar 12, 2012 at 5:18
  • Yes, I discovered the "file" command, and it's really useful. Thanks for the tip! Commented Mar 13, 2012 at 10:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.