Problems compiling XFree86 (Long/wide)

Problems compiling XFree86 (Long/wide)

Post by Mike Steckl » Fri, 25 Oct 1996 04:00:00



I hope that this is simply a problem of something being too obvious
and I am just overlooking it.  I have read the RELNOTES.TXT, the FAQ
(though this doesn't really talk about compiling), all the
applicable README's I could find and the XFree86 web pages.

  I have been trying to compile XFree86 to work with my newly upgraded
linux ELF system, but seem to be stopped on all fronts.  The problem
seems to be with compiling the libraries.  Everything seems to work
fine up until the compile reaches the SM library.  Then it fails
unable to open the ICE library _which_has_already_been_sucessfully_built_!

BTW: I know that I can simply install the binaries, but then I will
not have learned anything and will also have something on my system
that I cannot produce from source (other than netscape, but that is
another matter).

  But I get ahead of myself.  First, some background info:

    XF86src : 3.1.2 (still looking for a site for patches up to F or G)
    Kernel  : 2.0.13 (SMP, but that shouldn't affect this)
    gcc     : 2.7.2
    libc    : 5.4.7
    binutils: 2.3.0.7

        ld -V reports:
                ld version 2.7 (with BFD 2.7.0.3)
                  Supported emulations:
                   elf_i386
                   i386linux
                   i386coff
                   m68kelf
                   m68klinux
                   sun4
                   elf32_sparc

    Development environment defaults to ELF.

    I am running XFree86 3.1.2, but that was set up on my aout system
and I have just upgraded to ELF.  I haven't wanted to log out until
I get this built since I have no ELF X libraries in place yet and all
of my old libraries were moved in the upgrade.  Technically they
should still work since I updated my /etc/ld.so.conf and ran ldconfig,
but I just don't want to tempt fate (any more than I have to :^) ).

I configured my compile by editing linux.cf and xf86site.def only.  I
set the following:

in linux.cf:

#define OSMajorVersion          2
#define OSMinorVersion          0
#define OS*yVersion          13

in xf86site.def:

#define HasGcc2         YES
#define HasGcc          YES
#define HasGcc2ForCplusplus             YES
#define LinuxElfDefault         YES
#define UseElfFormat            YES

Disabled all servers except XF86SVGAServer, XF86Mach64Server (also
XnestServer because I didn't know what it was and didn't want to be
without some critical dependancy).  I also set

#define ServerToInstall         XF86Mach64Server

I do not want it to link against my old X libraries since they are not
ELF.  NOTE: I do not define 'UseInstalled', but at one point, in
exasperation, I did try:

#ifdef UseInstalled
#undef UseInstalled
#endif

in my host.def file, but it did not seem to make a difference.  I have
stripped all X11 executable paths from my PATH to force the build to
create and use its own xmkmf and keep out of my config directories.

I have also tried:
#define MakeHashTableBug        YES

that the xf86site.def file says may help if the make bombs in Xlibs
(even though the make never actually 'bombs out', it simply fails to
complete that library and then continues).  Again, no apparent
difference.

O.K., here is how the problem manifests:

I run make World >& world.log.  There seems to be no problems until I
reach the SM library link (and subsequently any library, program,
etc. that requires linking to a shared X library).  Here I get:

********************
rm -f libSM.so.6.0~
(cd .; T=`echo libSM.so.6.0 | sed 's/\.[^\.]*$//'`; gcc -o ./libSM.so.6.0~ -shared -Wl,-soname,$T sm_client.o       sm_genid.o        sm_manager.o        sm_process.o        sm_error.o        sm_misc.o        sm_auth.o -L../../usrlib -lICE )
/usr/i486-linux/bin/ld: cannot open -lICE: No such file or directory
make[3]: *** [libSM.so.6.0] Error 1
make[3]: Target `all' not remade because of errors.
********************

but you'll note the -L../../usrlib flag.  Looking at this directory:

********************
stargate:/usr/src/xc/lib/SM> ll ../../usrlib
total 0
lrwxrwxrwx   1 root     root           17 Oct 24 11:47 libFS.a -> ../lib/FS/libFS.a
lrwxrwxrwx   1 root     root           24 Oct 24 11:33 libICE.so.6.0 -> ../lib/ICE/libICE.so.6.0*
lrwxrwxrwx   1 root     root           24 Oct 24 11:32 libX11.so.6.0 -> ../lib/X11/libX11.so.6.0*
lrwxrwxrwx   1 root     root           25 Oct 24 11:34 libXExExt.a -> ../lib/XExExt/libXExExt.a
lrwxrwxrwx   1 root     root           19 Oct 24 11:15 libXau.a -> ../lib/Xau/libXau.a
lrwxrwxrwx   1 root     root           23 Oct 24 11:15 libXdmcp.a -> ../lib/Xdmcp/libXdmcp.a
lrwxrwxrwx   1 root     root           21 Oct 24 11:54 libfont.a -> ../lib/font/libfont.a
lrwxrwxrwx   1 root     root           43 Oct 24 13:05 liblbxXext.a -> ../workInProgress/lbx/lib/Xext/liblbxXext.a
lrwxrwxrwx   1 root     root           46 Oct 24 12:39 liblbxutil.a -> ../workInProgress/lbx/lib/lbxutil/liblbxutil.a
lrwxrwxrwx   1 root     root           21 Oct 24 11:32 liboldX.a -> ../lib/oldX/liboldX.a
stargate:/usr/src/xc/lib/SM> ll ../ICE/libICE*
-rwx------   1 root     root        82947 Oct 24 11:33 ../ICE/libICE.so.6.0*
stargate:/usr/src/xc/lib/SM>
********************

You'll note that libICE.so.6.0 exists.  Though I'm new to ELF, I have
discovered that 'ld' will only link to files ending in '.so'.  Thus it
makes sense that it cannot find libICE.so.

- Should the make produce *.so links for the *.so.6.0 libraries?  If
  so, why haven't these links been made?

- Does it have to build *.sa library stubs first?  If so, why haven't
  they been built?

- Should my linker recognize the '.so.6.0' extension as valid?

- Is there something I can define (or undef) to enable this compile?

There is one thing I haven't yet tried because of the incredible
amount of time and labor it would take. That is to build each library
individually in order, install it (with proper links of '.so' files)
then move to the next and build it until all the libraries are built
and finally build the rest of the components.  I do hope this is not
the solution, and it seems that the 'World' target in the root of the
source tree _should_ take care of this.

  If anyone can (and is willing to) help me out with this, I would
greatly appreciate it.

        Mike Steckly

 
 
 

1. Converting a Wide String to unsigned long long?

Hi there,

   I am looking for a way to convert a string to unsigned long long on
Solaris.  On AIX and Linux, there is wcstoull.  However, I do not find
that in solaris.  So, I plan to use swscanf ( str, L"%llu", &val).
However, running thru Rational Purify, each call to swscanf leaks 1
byte.

   Anyone has a 3rd solution other than the two above?  Or maybe there
is fix to the swscanf leak?

Thanks in advance,

Miranda

2. Problems with GATEWAY 2000 486-66 PCI SYSTEM

3. Long and Wide editor with column designations

4. terminal - modem interaction

5. long wide terminal reqd.

6. Telnet emulation?

7. XFree86 Problem with Mach32 (LONG)

8. Finding a socket's local port number

9. long long & long double types in Linux GCC

10. RH7.2 2.4.X off_t: long or long long?

11. Linux has a long, long, long way to go

12. Problem Compiling kernel on SuSE 5.2 - LONG(ish) POST

13. AIX 4.3.1, IBM 6208 Fast Wide SCSI, Seagate Ultra Wide 9.1 Gb drive?