[CentOS] 32/64-bit Library Sharing and Placement

Thu Apr 5 08:48:03 UTC 2012
Johnny Hughes <johnny at centos.org>

On 04/04/2012 11:33 PM, Brian McGrew wrote:
> I'm rebuilding much of the gnu toolchain for some development testing I'm working.  GMP, MPC, MPFR, PPL, as well as many others.  I need to be able to have both 32 and 64 bit versions of these libraries avilable on the system, in more or less the same path (/toolchain/lib, /toolchain/lib64).  
> Generically speaking, is there an easy way to build both 32 and 64 bit versions a the same time???  Or, more specifically, what is the best way to get both versions built???
> CentOS 6.2 on a Dell 1900 with Xeon 5130 CPU's.
> After a few more hours of digging, I believe what I'm wanting is multilib???
> Is there a way to get a 32 and 64 bit build (multilib?) in one pass?  If not, what is the easiest way to do this?

Your questions are not making sense to me ...

You talk about /toolchain/lib and /toolchain/lib64 ... no idea what that
is or what you are trying to build ... or what you are trying to build
with.  I will assume you want to build some 32 and 64 bit packages on
the same machine with GCC on CentOS 6.2

IF you want to build items using the CC variable and if you are using
gcc then you can install both glibc-devel.i686 and glibc-devel.x86_64
and IF you pass in the proper -m 32 or -m 64 flags with gcc you can
compile either i[3,4,5,6]86 (-m 32) or x86_64 (-m 64) items.

If you are talking about compiling 32 bit programs on x86_64 machine,
then you need to install these i686 packages on your x86_64 machine:

yum install glibc.i686 libstdc++-devel.i686 glibc-devel.i686 gcc make
autoconf automake16

You should also add this line to your .rpmmacros file in the home
directory of the user you will be compiling things under (and I also add
it to the root user's home directory):

%_query_all_fmt %%{name}-%%{version}-%%{release}.%%{arch}

After adding that line, you can issue the command:

rpm -qa | grep i[3,4,5,6]86

with that, you can see what 32 bit packages are installed on your machine.

If you have multi-lib libraries, I personally would use something like
mock to build chroots that contain only the packages you need to build
the things you want to build.  This allows you to keep your machine with
very minimal packages installed and allows you to put development
libraries in the chroots.  Here is info on mock and sandboxes:


(the epel repo has mock in it)

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 262 bytes
Desc: OpenPGP digital signature
URL: <http://lists.centos.org/pipermail/centos/attachments/20120405/bc58f468/attachment-0005.sig>