[CMake] Compiling x86 executable on amd64

Mathieu Malaterre mathieu.malaterre at gmail.com
Fri May 2 16:52:03 EDT 2008


On Fri, May 2, 2008 at 10:17 PM, Mathieu Malaterre
<mathieu.malaterre at gmail.com> wrote:
> John,
>
>
>  On Fri, May 2, 2008 at 9:07 PM, John Doe <ufnoise at gmail.com> wrote:
>  > Mathieu,
>  >
>  >  It is perfectly ok to redistribute libstdc++.  You put it in your
>  >  directory tree, not in the standard system location.
>  >
>  >  Setting LD_LIBRARY_PATH to the directory of your libstdc++ allows only
>  >  applications started in that shell environment to find it.  You can
>  >  use a wrapper script to set this environment variable and exec your
>  >  binary.  This is the same stuff that firefox has been doing for years
>  >  for all of their dependencies.
>
>  This is way too complex, at least for me. You have to create a script
>  that will call your real binary. If I had it from scratch, I might
>  have taken this solution. But again I am not trying some crazy cross
>  compilation thingy, just simple x86 instruction on a x86_64 machine
>  (with multilib!).
>
>
>  >  Use ldd on your binary to determine which shared libraries you link
>  >  against.  Use ldd on the shared libraries to determine the shared
>  >  libraries they link against.  Make sure that the appropriate libraries
>  >  are redistributed with your app.  Of course certain one's cannot be
>  >  redistributed since they are directly linked against your particular
>  >  kernel and would be useless to your customer.
>
>  Very hard to implement at least in cmake. At least way too much time consuming.
>
>
>  >  Statically link as much as you can.  The p4 client works fine on my
>  >  gentoo box.  So does the intel compiler the last time I checked.  See
>  >  what libraries they redistribute.
>
>  ?
>  I hate static lib, start creating a bunch of exectutable and your
>  achive grows exponentially. I think it gets even worse with cmake, as
>  it try to pull dependencie of dependeie (not verified).
>
>
>  >  To get around this issue, many vendors say which distributions are
>  >  supported by their application so they don't have to build and support
>  >  every linux distribution out there.
>
>  cmake binaries works without all what you describe AFAIK.
>
>
>  >  Creating a chroot jail (or using vmware) are other alternatives.
>
>  I was trying to be ironical for the vmware thingy. I certainly do not
>  want to re-install a complete system for a simple compiler flag. But I
>  can understand that chroot is a pretty nice solution for running
>  dashboard (then you are sure to reproduce exactly target system of
>  your users)
>
>
>  >  How is trying to help you redistribute linux applications make me a
>  >  Microsoft spy?
>
>  Reading your post, it looked like a very complex solution, while I was
>  only looking for simple stuff :)
>
>
>  > How is insulting your customers by saying they don't
>  >  know how to compile things not make you a Microsoft spy?
>
>  Most people on Win32 system do not know, do not need a compiler to
>  quickly try a freeware. Of course when you know what cmake is, what
>  out of source is, where gcc is, what g++ version you are using, then
>  yes you can compiler with all your crazy compilation flag.
>  As a side note, according to sf.net stats, I have more users download
>  the binaries, than the source code... well it might only means there
>  is more win32 users with no compiler outta there :)
>
>
>  >  The hard reality is that it isn't easy to guarantee compatibility
>  >  across all of your applications.
>  >
>  >  How is g++ 4.3 that much of a step up from g++ 3.4?  Why not use the
>  >  intel compiler or the one from the portland group?
>
>  I am happy with g++. g++ 3.4 will solve part of my issue since it is
>  garantee to use the old ABI of the glibc, which is what I am trying to
>  do.
>  So again I perfectly understand my binaries will not run on old
>  system, where gcc 3.3 was the default, but I am pretty sure that 90%
>  of people have now g++-4.0 or above. For other, then yes, they'll
>  better learn about cmake/g++ :)
>
>  I cannot test right now, but apparently the compile flag I was looking
>  for is simply '-m32', ref:
>
>  http://gentoo-wiki.com/TIP_AMD64-x86-distcc
>
>  Now I am pretty sure that g++-3.4 + -m32 will allow me to produce x86
>  executable that anyone can execute, out of the box (maybe not some old
>  system using pre gcc 3.4 system where C++ ABI was different, but I'll
>  assume they'll tends to disapear as time goes).

I finally found a link:

http://trac.autopackage.org/wiki/GlibcVersionsOfDifferentLinuxDistributions

From

http://groups.google.com/group/gnu.g++.help/msg/32c0df4f11ff018a

I'll try that on monday.


-- 
Mathieu


More information about the CMake mailing list