This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: question of ld
Thanks Lu, as your advice now I do the project with shared libraries.
And another problem jump out.
I build .so file with flag "--whole-archive" which is used to include
every object file in the archive.(I mean I build .so with .a) And then run
ld, there are many error and warning messages showed. These messages are
about "multiple definition".
I dont know how to allow multiple symbol definitions under linux. I
just can do it under SunOS with flag "-z muldefs". Can you show me a hand
again.
Thanks in advance.
"H . J . Lu" wrote:
> On Thu, May 16, 2002 at 05:16:20PM +0800, Shiyi Ma wrote:
> > Now I am doing a project under SunOS and Linux. And want to
> > build a lib file which is combined of many object files. In the lib
> > file, there are many symbols which should not be seen. So I want to
> > strip some symols from the lib file.
>
> Is that is a shared object or a relocatable object? You can't do it very
> well with relocatable objects. But we have been doing it to shared
> objects all the time in glibc on Linux.
>
> > Under SunOS platform, there are some ld's flags to touch my
> > goal.Ther are : -z muldefs -B reduce -M mapfile -B eliminate -z
> > redlocsym. ( mapfile includes some symbols what I need ). And there are
> > flags -z allextract and -z defaultextract to extract some lib files
> > which include some object files. (These lib files are the results from
> > some other source code and will make up of the lib file which I point
> > out and I really need)
> > I want to know which flags can do the same function under Linux
> > just as the flags which I have pointed out under SunOS.
> > In fact, I have tried some flags and failed. At first, I try to
> > use -s to omit all symbols, but there are about half symbols left( for
> > example : 20000->10000). Then I use -x and the result is the same as -s.
> > What's the difference between the two flag? I also tried
> > --retain-symbols-file FILE, --version-script FILE and -R FILE, but I
> > don't
> > know correct file format and failed. Who can tell me the right FILE
> > format?
>
> Do
>
> # info ld
>
> and search for --version-script is a good start. The easy one is
>
> {
> global:
> foo;
> local:
> *;
> };
>
> or
>
> MY_VERSION {
> global:
> foo;
> local:
> *;
> };
>
> H.J.
--
Milkyway R&D
ShiYi_Ma
Software Engineer
Avant! Microelectronics (Shanghai) Co., Ltd.
Tel: +86-21-62837026*532