Boost logo

Boost Users :

From: Daniel Lord (daniel_at_[hidden])
Date: 2007-11-09 10:06:22


>
> Daniel Lord wrote:
>
> >> So how can this be? The build was for Darwin and yet its the wrong
>
> >> architecture?!?!?!
>
> >>
>
> >> I don't understand the error messages frankly.
>
>
> Me neither: but after a quick bit of Googling this appears to be a
> common problem if you mix "universal" and "non-universal" binaries. So my
> guess is
>
> that the Boost libraries and your executable were built with different
>
> architechture options: one universal one not. But I can't tell you which
> is
>
> which ! :-)
>
> Sure enough none of the libraries are universal binaries and only the
dynamic libraries are for the i386 architecture (see lipo output below).

$lipo -detailed_info libboost_regex*
input file libboost_regex-1_34_1.a is not a fat file
input file libboost_regex-1_34_1.dylib is not a fat file
input file libboost_regex-d-1_34_1.a is not a fat file
input file libboost_regex-d-1_34_1.dylib is not a fat file
input file libboost_regex-d.a is not a fat file
input file libboost_regex-mt-1_34_1.a is not a fat file
input file libboost_regex-mt-1_34_1.dylib is not a fat file
input file libboost_regex-mt-d-1_34_1.a is not a fat file
input file libboost_regex-mt-d-1_34_1.dylib is not a fat file
input file libboost_regex-mt-d.a is not a fat file
input file libboost_regex-mt.a is not a fat file
input file libboost_regex.a is not a fat file
Non-fat file: libboost_regex-1_34_1.a is architecture: ppc7400
Non-fat file: libboost_regex-1_34_1.dylib is architecture: i386
Non-fat file: libboost_regex-d-1_34_1.a is architecture: ppc7400
Non-fat file: libboost_regex-d-1_34_1.dylib is architecture: i386
Non-fat file: libboost_regex-d.a is architecture: ppc7400
Non-fat file: libboost_regex-mt-1_34_1.a is architecture: ppc7400
Non-fat file: libboost_regex-mt-1_34_1.dylib is architecture: i386
Non-fat file: libboost_regex-mt-d-1_34_1.a is architecture: ppc7400
Non-fat file: libboost_regex-mt-d-1_34_1.dylib is architecture: i386
Non-fat file: libboost_regex-mt-d.a is architecture: ppc7400
Non-fat file: libboost_regex-mt.a is architecture: ppc7400
Non-fat file: libboost_regex.a is architecture: ppc7400

I made the assumption that Boost would, as a default, build for the native
architecture it was building one since most of the other libraries I use
have been doing that for nearly 2 years. My mistake. It is building
universal binaries that usually requiring customization of the build. But to
build ppc on an intel platform--that was completely unexpected at this late
date.

Searching the Boost site for the key word "universal binaries" found
nothing. Searching for "universal OS X" gave four generic uses of the word
"universal" but nothing of help. Anybody have any experience building Boost
as a universal library set? If not...

It's been over a year since I had to hack a build so I need to refresh my
memory. It my well be time to pour another cup of java, take the red pill,
and see how deep the rabbiit hole goes.



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net