hidden symbol `__divdi3' is referenced by DSO
Jeff Johnston
jjohnstn@redhat.com
Thu Dec 2 21:47:00 GMT 2004
The rpath is also used to tell the linker where to find shared libraries during
the link. See the paragraph below. I know I had to add it to my script that
builds my shared executables.
`-rpath DIR'
Add a directory to the runtime library search path. This is used
when linking an ELF executable with shared objects. All `-rpath'
arguments are concatenated and passed to the runtime linker, which
uses them to locate shared objects at runtime. The `-rpath'
option is also used when locating shared objects which are needed
by shared objects explicitly included in the link; see the
description of the `-rpath-link' option. If `-rpath' is not used
when linking an ELF executable, the contents of the environment
variable `LD_RUN_PATH' will be used if it is defined.
-- Jeff J.
Shaun Jackman wrote:
> My problem occurs not at run time, but at link time.
>
> cc -nostdlib -L/home/sjackman/lib/newlib -Wl,-rpath
> /home/sjackman/lib/newlib /home/sjackman/lib/newlib/crt0.o hello.o
> -lc -lm -lgcc -o hello
> /usr/bin/ld: hello: hidden symbol `__divdi3' in
> /usr/lib/gcc-lib/i486-linux/3.3.4/libgcc.a(_divdi3.oS) is referenced
> by DSO
> collect2: ld returned 1 exit status
>
> Cheers,
> Shaun
>
>
> On Thu, 02 Dec 2004 14:53:34 -0500, Jeff Johnston <jjohnstn@redhat.com> wrote:
>
>>Works fine for me.
>>
>>It looks like you need an rpath specified. Try adding:
>>
>>-Wl,-rpath /home/sjackman/lib/newlib
>>
>>-- Jeff J.
>>
>>
>>Shaun Jackman wrote:
>>
>>>When trying to link "Hello, world!" with a native shared newlib
>>>library, I get this hidden symbol error. The same application links
>>>perfectly with -static.
>>>
>>>Thanks in advance for any help you can give.
>>>
>>>Please cc me in your reply. Cheers,
>>>Shaun
>>>
>>>newlib 1.12.0 (CVS 2004-11-26)
>>>gcc 3.3.4
>>>
>>>$ cc -g -O2 -W -Wall -Werror -I/home/sjackman/include/newlib -nostdlib
>>>-L/home/sjackman/lib/newlib /home/sjackman/lib/newlib/crt0.o hello.c
>>>-lc -lm -lgcc -o hello
>>>/usr/bin/ld: hello: hidden symbol `__divdi3' in
>>>/usr/lib/gcc-lib/i486-linux/3.3.4/libgcc.a(_divdi3.oS) is referenced
>>>by DSO
>>>collect2: ld returned 1 exit status
>>>make: *** [hello] Error 1
>>>$ cc --version | head -1
>>>cc (GCC) 3.3.4 (Debian 1:3.3.4-13)
More information about the Newlib
mailing list