BBS水木清华站∶精华区
发信人: shawn@skydome.hinet.net (Shawn Hsiao), 信区: linux
标 题: Re: ELF
发信站: Private site running Linux (Tue Mar 7 04:22:45 1995)
转信站:
==>Benjamin Chen (dagger.bbs@csie.nctu.edu.tw) wrote:
∶ 1. Linux kernel 1.1 的第几个 patch 开始的 ELF 才可信任?
大约在 1.1.6x 後的就可以了.
∶ 2. ELF 将来会取代 static shared library 吗?
^^^^^^^^^^^^^^^^^^^^^
我假设你想问的是 libraries for dynamic linked 跟
libraries for static linked.
Probably. 原有 a.out 的 users 太多了, 目前没有好的方法代换掉.
不少人已经提议要将 ELF 变成 Linux 标准的 binary format, 甚至连原本欠缺
的 core dump/debug 部份都写好了, 只差 distribution (如 Slackware) 的配合.
PS. 去年曾经在 Debian 0.93R1 发出前提过, 将 Debian 变成第一个全 ELF 的
distribution, 不过 Debian 的主要干部坚决反对, 目前游说目标指向 Bogus.
∶ 3. ELF 是否会为执行中的程式节省 RAM 的使用?
使用 ELF 最大的好处是可以使 dynamic linked library 的制造变得容易 (implies
混乱?), 因此, 可以节省部份记忆体 (不是很有关系, 但是会有作用).
还有其它好处, 我曾经 demo 给 wycc 看过, 我想他也开始换 ELF 了.
∶ 4. 现在是不是植入 ELF 的良机?
我认为还不是. 除非你有自己动手 build 大部份 utilities 的时间. (我连 XFree86
3.1.1 都是自己 build 的. 8~~~)
∶ 5. 假设我写了个需用上 curses 的程式, 并且想将之编译成
∶ ELF 的格式; 然而, 系统内所安装的 curses 程式库只有
∶ 一份 static shared library 及一份 static library.
∶ 请问可能吗? 是不是 curses 也非得有 ELF 格式的
∶ library 才可以?
那是当然.
∶ 6. 若想发展自己的 ELF 格式的 library, 是不是也要像 static
∶ ^^^^^^
∶ shared library 一样麻烦?
∶ ^^^^^^^^^^^^^^
我假设你想问的是 a.out 的 shared libraries.
不是, 简单多了.
∶ 7. 有为 ELF 而订制的 gcc, 那 gdb 是否也要更新?
如果使用 Cygnus 的版本, 就不需要再更新. ELF 在 Linux 上的使用, Cygnus
也出了不少力.
∶ 8. 是不是大部份使用 static shared library 的软体都可以
^^^^^^^^^^^^^^^^^^^^^
假设同 (6)
轻易地更改而去用 ELF library?
不是, 两者为不同系统, 不能相容.
∶ 9. 您使用 ELF 後的经验与感想? 这是我最渴望知道的. :-)
如果你有使用大 package 的机会, ELF 也许是非常适合你.
前一阵子帮忙处理 Modula-3 for LINUXELF 的一部份, 得到的效果另人非常满意.
原本 Modula-3 的 package 在传统 a.out 的 binary format 下只能做 static
link, 使得 binary 的大小居高不下, load time 很长, 占的 storage 也很多.
硬要将一部份抽出制成 shared libraries 的话, 却会有混乱的问题. (目前 ELF
也有一点点混乱, 因为我们还没有达成共识. ELF 的使用者数量太少是一个障碍.)
改用 ELF 後, 将一部份大於 500KB 的 libraries 抽出制为为 shared libraries,
整体表现就提升很多了.
我底下举一个不是很好的例子, 主要是要比较多了几个 shared libraries 之後的
档案大小. (处理 tetris.shared 这个档案的方式, 就是原本在 a.out 上的方式.)
原本应该还要测 load time, 但是因为没有对照组, 再加上没有适当的 program,
所以只好省略.
目前 Modula-3 for Linux 的 distribution 我看还是以 a.out 为主, 但越来越
多人会倾向使用 ELF, 只要光看档案大小就够了.
-rwxr-xr-x 1 root root 923039 Feb 15 1995 libm3core.so.1.1.1
-rwxr-xr-x 1 root root 1866111 Feb 15 1995 libm3.so.1.1.1
-rwxr-xr-x 1 shawn users 148531 Mar 7 03:37 tetris
-rwxr-xr-x 1 shawn users 1214545 Mar 7 03:41 tetris.shared
-rwxr-xr-x 1 shawn users 2267301 Mar 7 03:33 tetris.standalone
tetris:
=======
Linux ELF dynamic linker: tetris: file loaded: /lib/elf/libm3.so.1
^^^^^^^^^^
Linux ELF dynamic linker: tetris: file loaded: /lib/elf/libm3core.so.1
^^^^^^^^^^^^^^
Linux ELF dynamic linker: tetris: file loaded: /lib/elf/libXaw.so.6
Linux ELF dynamic linker: tetris: file loaded: /lib/elf/libXmu.so.6
Linux ELF dynamic linker: tetris: file loaded: /lib/elf/libXext.so.6
Linux ELF dynamic linker: tetris: file loaded: /lib/elf/libXt.so.6
Linux ELF dynamic linker: tetris: file loaded: /lib/elf/libX11.so.6
Linux ELF dynamic linker: tetris: file loaded: /lib/elf/libSM.so.6
Linux ELF dynamic linker: tetris: file loaded: /lib/elf/libICE.so.6
Linux ELF dynamic linker: tetris: file loaded: /lib/elf/libm.so.4
Linux ELF dynamic linker: tetris: file loaded: /lib/elf/libc.so.4
tetris.shared:
==============
Linux ELF dynamic linker: tetris.shared: file loaded: /lib/elf/libXaw.so.6
Linux ELF dynamic linker: tetris.shared: file loaded: /lib/elf/libXmu.so.6
Linux ELF dynamic linker: tetris.shared: file loaded: /lib/elf/libXext.so.6
Linux ELF dynamic linker: tetris.shared: file loaded: /lib/elf/libXt.so.6
Linux ELF dynamic linker: tetris.shared: file loaded: /lib/elf/libX11.so.6
Linux ELF dynamic linker: tetris.shared: file loaded: /lib/elf/libSM.so.6
Linux ELF dynamic linker: tetris.shared: file loaded: /lib/elf/libICE.so.6
Linux ELF dynamic linker: tetris.shared: file loaded: /lib/elf/libm.so.4
Linux ELF dynamic linker: tetris.shared: file loaded: /lib/elf/libc.so.4
tetris.standalone:
==================
statically linked (ELF)
BBS水木清华站∶精华区