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
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
ld -V reports:
ld version 2.7 (with BFD 184.108.40.206)
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:
#define OSMajorVersion 2
#define OSMinorVersion 0
#define OS*yVersion 13
#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:
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
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: *** [libSM.so.6.0] Error 1
make: 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
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*
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.