Dear Phil,
Good luck . . . I have been fighting an x86_64 system for some time, and
have just figured out what some of the problems are. I am running Fedora
Core 5.
I believe that if you use the -m32 flag for gcc you can compile 32-bit code
for 32-bit libraries. The default is to compile 64-bit and link 64-bit.
The real joker in the deck is the file system layout:
/usr Default root prefix
/usr/include Used for both 32 and 64 bit systems
/usr/lib Libraries for 32-bit code
/usr/lib64 Libraries for 64-bit code
/usr/bin For both -- the operating environment is encoded in the file
This breaks the standard prefix scheme for prefix/{include,lib,src,...}
because it is not easy to tell when you need lib and when you need lib64.
I was unable to compile Coot from source until the last day or so because
the linker kept putting the 32-bit libGL.so in the search path. This is a
fatal error.
I finally tracked this to a bug in libtool, which figures out about the
32/64 bit issues *nearly* all of the time. Sigh.
Short answer: get the latest, bleeding-edge Autoconf package from the GNU
web site and install it. It is alpha, but seems to work, and the configure
scripts once generated can be run almost anywhere. (Oh, you may also have
to upgrade M4.)
*Note* I got Autoconf 2.61, but the real key seems to be the version number
on the libtool macros. Version 1.2248 does not work, but Version 1.2381
does work on my system. Unfortunately the latest versions are also more
picky about the macros, so if autoupdate can't fix them, you have to do some
hand editing.
I will be happy to follow up on this off-line, and expect to post a summary
on the Coot bulletin board once I have some loose ends tidied up. I suspect
this may be why I have had problems trying to build ccp4mg from source on
this machine, as well.
Overall the machine runs really well, but you do hit the occasional package
that is not 64-bit clean.
Best regards,
Lynn Ten Eyck
On 2/14/07 10:00 AM, "Phil Evans" <[log in to unmask]> wrote:
> I'm just starting to use a 64-bit Linux machine (running some sort of
> RedHat Enterprise system) as a development machine
>
> Our general CCP4 installation is from the binary download (redHat
> option) (presumably built on a 32-bit machine), which seems to run OK
> on a range of different Linux machines
>
> However if I compile on the 64-bit machine & try to link with these
> libraries, it doesn't work
>
> r/bin/ld: skipping incompatible /public/xtal/ccp4-6.0/ccp4-6.0.2-
> linux/lib/libccp4f.a when searching for -lccp4f
> /usr/bin/ld: cannot find -lccp4f
> collect2: ld returned 1 exit status
> make: *** [scala] Error 1
>
>
> Is it possible to set compile flags to produce something (.o) which
> will link with th distributed libraries, and produce an executable
> which will run on other (32-bit) Linux machines?
>
> In the mean time, I'm doing a complete source build on the 64-bit
> machine
>
> Phil
--
Lynn F. Ten Eyck [log in to unmask]
San Diego Supercomputer Center (858) 534-5141 (Voice)
University of California, San Diego (858) 822-3610 (Fax)
9500 Gilman Drive #0444 Office: 3131 Atkinson Hall
La Jolla, CA 92093-0444
|