[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