[syslinux] 5.00 c32 dependencies paths
Ady
ady-sf at hotmail.com
Sat Dec 8 00:45:04 PST 2012
> On Sat, Dec 8, 2012 at 6:44 AM, Ady <ady-sf at hotmail.com> wrote:
> > The following is a list gathered from Syslinux 5.00 using the "ldd"
> > command under Linux.
> >
> > (Note: use a monospaced font for clarity.)
> >
> > advdump.c32: statically linked
> > cat.c32: statically linked
> > chain.c32: libutil_com.c32
> > libcom32.c32
> > cmd.c32: libcom32.c32
> > config.c32: libcom32.c32
> > cpuid.c32: statically linked
> > cpuidtest.c32: libcom32gpl.c32
> > disk.c32: libcom32gpl.c32
> > dmitest.c32: libcom32gpl.c32
> > elf.c32: libcom32.c32
> > entrydump.c32: statically linked
> > ethersel.c32: libcom32.c32
> > fancyhello.c32: libutil_com.c32
> > gfxboot.c32: libcom32.c32
> > gpxecmd.c32: libcom32.c32
> > hdt.c32: libutil_com.c32
> > libcom32gpl.c32
> > libcom32.c32
> > libmenu.c32
> > hello.c32: statically linked
> > hexdump.c32: libcom32.c32
> > host.c32: libcom32.c32
> > ifcpu.c32: libutil_com.c32
> > libcom32gpl.c32
> > libcom32.c32
> > ifcpu64.c32: libcom32.c32
> > ifmemdsk.c32: libcom32.c32
> > ifplop.c32: libcom32.c32
> > kbdmap.c32: libcom32.c32
> > keytest.c32: libutil_com.c32
> > kontron_wdt.c32: libcom32.c32
> > ldlinux.c32: statically linked
> > libcom32.c32: statically linked
> > libcom32gpl.c32: statically linked
> > liblua.c32: statically linked
> > libmenu.c32: libutil_com.c32
> > libcom32.c32
> > libutil_com.c32: statically linked
> > linux.c32: libcom32.c32
> > localboot.c32: libcom32.c32
> > ls.c32: statically linked
> > lua.c32: liblua.c32
> > libcom32gpl.c32
> > libcom32.c32
> > mboot.c32: libcom32.c32
> > meminfo.c32: statically linked
> > menu.c32: libutil_com.c32
> > pcitest.c32: libcom32.c32
> > pmload.c32: libcom32.c32
> > prdhcp.c32: libutil_com.c32
> > libcom32.c32
> > pwd.c32: statically linked
> > pxechn.c32: libutil_com.c32
> > libcom32.c32
> > reboot.c32: libcom32.c32
> > resolv.c32: statically linked
> > rosh.c32: libutil_com.c32
> > libcom32.c32
> > sanboot.c32: libcom32.c32
> > sdi.c32: libcom32.c32
> > serialinfo.c32: statically linked
> > sysdump.c32: libcom32.c32
> > vesainfo.c32: statically linked
> > vesamenu.c32: libutil_com.c32
> > libcom32.c32
> > vpdtest.c32: libcom32gpl.c32
> > whichsys.c32: libcom32.c32
> > zzjson.c32: libcom32gpl.c32
> >
> >
> For me ldd shows (Syslinux 5.00):
>
> /usr/lib/syslinux/bios/chain.c32:
> linux-gate.so.1 (0xf76f3000)
> ../../com32/libutil/libutil_com.c32 => not found
> ../../com32/lib/libcom32.c32 => not found
>
> Instead of just showing
>
> /usr/lib/syslinux/bios/chain.c32:
> libutil_com.c32
> libcom32.c32
>
The list I posted is not the exact result from ldd. I made the list
based on it. (BTW, the posted list might be displayed with a
different alignment format in different email clients. It may be
clearer to see in the ML archive
http://www.syslinux.org/archives/2012-December/018747.html .)
> ldd is showing similar info for other *.c32 files. Why is it linked to the
> build dir libcom32.c32 instead of $PWD/libcom32.c32 . Is something wrong in
> Makefiles? I am getting similar ldd info for Syslinux firmware branch efi64
> (v6.00-pre??) ? How do I fix this?
>
The lib*.c32 files are dependencies in the sense that they are needed
for other *.c32 files to work. We are not talking here about
dependencies needed to build Syslinux in your system, nor to use the
SYSLINUX/EXTLINUX (for example) installer(s).
The paths shown by the ldd command are the paths from the Syslinux
build in your system (or to boot your system with Syslinux?). The
list posted here just shows you which lib*.c32 files you need to copy
to the destination device where you are going to install, for
example, ldlinux.sys (for SYSLINUX/EXTLINUX) on it.
So, for example, if you installed ldlinux.sys in a UFD, the installer
already copies ldlinux.sys and ldlinux.c32. If you want to use
menu.c32 too, then the UFD should contain (for this example):
./boot/syslinux/ldlinux.sys
./boot/syslinux/ldlinux.c32
./boot/syslinux/menu.c32
./boot/syslinux/libutil_com.c32
./boot/syslinux/syslinux.cfg
because menu.c32 needs libutil_com.c32 (as listed by ldd). Without
libutil_com.c32, menu.c32 fails. The "/boot/syslinux/" path is the
"installation directory" just for this example. Since syslinux.cfg is
also there, in the installation directory, that directory is going to
be the "Current Working Directory" when you first boot that UFD.
When you boot with that UFD, if the syslinux.cfg file contains "UI
menu.c32", then menu.c32 will be able to use libutil_com.c32 located
in that same directory and should show you the boot menu.
This is a very simple example, just to give a general basic idea. In
this simple case, the PATH directive is not needed, as the lib*.c32
file(s) is (are) located in the same directory as the installation
directory (where ldlinux.sys was installed), which is also where
syslinux.cfg is located, which is the initial CWD when booting with
this UFD.
> The new PATH directive is used in the cfg files to point to the
> > location of the lib*.c32 files, just in case that location is not the
> > "Current Working Directory".
>
>
> Any example of how to use PATH in syslinux.cfg ?
>
> Regards.
>
> Keshav
The general explanation about the new PATH directive can be found in
the Syslinux 5.00 package in syslinux.txt. Look for the PATH
directive and PATH rules.
I have found some problems in 5.00, which I reported to the ML
already. If there are more difficulties, and the above basic example
(and the syslinux.txt file) are not enough (and they might not be),
just start a new email thread in the ML with the specific case. I'm
not sure _I_ am going to know the answer, but maybe someone will.
HTH,
Ady.
More information about the Syslinux
mailing list