[CMake] 32 bits compilation on x64 platform - how to find system libraries

Olivier Pierard olivier.pierard at cenaero.be
Mon Dec 7 08:18:29 EST 2009


Marcel Loose wrote:
> On Mon, 2009-12-07 at 13:19 +0100, Mathieu Malaterre wrote:
>   
>> On Mon, Dec 7, 2009 at 11:43 AM, Marcel Loose <loose at astron.nl> wrote:
>>     
>>> Hi Olivier,
>>>
>>> I think you need to set the global property FIND_LIBRARY_USE_LIB64_PATHS
>>> to OFF.
>>>
>>> BTW, I disagree with Mathieu that building 32-bit libraries/executables
>>> on a 64-bit system is cross-compilation. These binaries can be run
>>> without a problem on the host system. So, IMHO, you don't need a
>>> toolchain file. The only thing you have to do is instruct gcc/g++ to
>>> generate 32-bit objects/binaries, using the -m32 option, and tell CMake
>>> to look in lib instead of lib64 by setting the aforementioned property.
>>>       
>> There is two things from the top of my head:
>> 1. ia64 which is not x86 compatible
>> 2. You still need a libz/libpng/libjpeg compiled as 32bits on your
>> amd64 system...
>>
>> I think the project needs to be self contained (convenient libs)
>> otherwise to get it compiled using the -m32 trick
>>
>> 2cts
>>     
>
> Hi Mathieu
>
> Indeed, ia64 is not x86 compatible. I thought that Olivier was using a
> x86_64 processor. Most 64-bit distros (for x86_64 that is) also provide
> 32-bit libs/binaries.
>   
Thanks guys for your insights.  I'm effectively working on a x86_64 with
32-bits pre-compiled libs provided by Suse in folder /usr/lib/ while
64-bits libraries are in /usr/lib64/.

Solution proposed by Marcel seemed perfectly suitable for me.  So I tried:
set(FIND_LIBRARY_USE_LIB64_PATHS OFF)
...
find_library(FLTK_LIB_TEST NAMES fltk)
message(FIND_LIBRARY_USE_LIB64_PATHS: ${FIND_LIBRARY_USE_LIB64_PATHS})
message(FLTK_LIB_TEST: ${FLTK_LIB_TEST})

And with 'cmake -U "*LIB*" ..', I get:
FIND_LIBRARY_USE_LIB64_PATHS:OFF
FLTK_LIB_TEST:/usr/lib64/libfltk.a

Of course, libfltk.a is well in both folders /usr/lib/ and /usr/lib64/.

Olivier
> Best regards,
> Marcel Loose.
>
>
>
>
>   


-- 
Olivier Pierard

CENAERO, Virtual Manufacturing Group

Bâtiment EOLE, 1er étage
Rue des Frères Wright, 29
B-6041 Gosselies
BELGIUM 

Tel: +32.(0)71.919374
Fax: +32.(0)71.919370

http://www.cenaero.be/

+-+-+- Disclaimer +-+-+-

http://www.cenaero.be/disclaimer



More information about the CMake mailing list