missing /usr/lib/libc_nonshared.a

Willem Jan Withagen wjw at digiware.nl
Sun Dec 14 19:25:11 UTC 2014


On 13-12-2014 0:24, Willem Jan Withagen wrote:
> On 12-12-2014 16:12, Dimitry Andric wrote:
>> On 12 Dec 2014, at 09:50, Willem Jan Withagen <wjw at digiware.nl> wrote:
>>>
>>> On 2014-12-06 23:14, Willem Jan Withagen wrote:
>>>> Still trying to upgrade from 9.3 to 10.1, which seemed to get going.
>>>> Completely started over again with cleaned out /etc/{make.src}.conf.
>>>> Then build/installed 9.3 again which also included clang this time.
>>>>
>>>> but building the toolchain generates:
>>>> --------------------------------------------------------------
>>>>>>> stage 2.3: build tools
>>>> --------------------------------------------------------------
>> ...
>>>> cc -o gethost  -L/usr/obj/usr/src10/tmp/legacy/usr/lib -O2 -pipe -I.
>>>> -I/usr/src10/bin/csh -I/usr/src10/bin/csh/../../contrib/tcsh
>>>> -D_PATH_TCSHELL='"/bin/csh"' -std=gnu99
>>>> -I/usr/obj/usr/src10/tmp/legacy/usr/include
>>>> /usr/src10/bin/csh/../../contrib/tcsh/gethost.c
>>>> /usr/bin/ld: cannot find /usr/lib/libc_nonshared.a
>>>> *** Error code 1
>>>> -----------------
>>>>
>>>> Now I can fudge around this, by getting this lib from another 10.x
>>>> system, but changes are that things are nog 100% compatible.
>>>>
>>>> So how do I get this lib first, before starting to build bin/csh.
>>
>> This part of buildworld uses the compiler, include files, linker and
>> libraries from your existing system.  E.g. it is normal for this part to
>> use /usr/bin/ld, /usr/lib, and so on.
>>
>> On a 9.3 system, I would not expect ld to search for libc_nonshared.a,
>> since that is a feature introduced in 10.0, where /usr/lib/libc.so was
>> changed from a symlink to a linker script.
>>
>> Can you please check on your system, what /usr/lib/libc.so is?  Is it a
>> symlink or a plain text file?  If it is the latter, your system is most
>> likely polluted with 10.x installation left-overs.
> 
> Right, then this is a consequence of something I'm trying to repair....
> I thought I build world+kernel.
> So I installed kernel and rebooted,
> Only to find out that instalworld did not make it very far.
> 
> After that I started fidgeting, hoping to somehow get to 10.1.
> 
> So my guess is that things get very upset if one is building on a system
> with a 10.1 kernel, and a 9.3 world.
> 
>>>> The other question is:
>>>> 	why am I still using gcc for the toolchain even since I now have
>>>> 	clang onboard?
>>
>> For the early stages of buildworld, e.g. bootstrap-tools, build-tools
>> and cross-tools, it is normal that the system compiler is used, e.g.
>> just /usr/bin/cc.
>>
>> On a 9.x system, that is usually gcc, but this does not say anything
>> about the later stages of buildworld, which will be built with the
>> toolchain produced in the cross-tools stage.  For 10.x, that is usually
>> clang.
>>
>>
>>> Turn out that the only way I could cheat make in to going anywhere was to:
>>> 	cd /usr/src/lib/libc_nonshared
>>> 	make
>>> 	make install
>>>
>>> And only then the build seems to progress.
>>
>> I think it is better to inspect your /usr/lib/libc.so, and find out if
>> it is accidentally replaced by a linker script.
> 
> /* $FreeBSD: stable/10/lib/libc/libc.ldscript 258398 2013-11-20
> 20:24:59Z peter $ */
> GROUP ( /lib/libc.so.7 /usr/lib/libc_nonshared.a
> /usr/lib/libssp_nonshared.a )
> 
> So that seem to be the case
> 
>>> This all even though the /usr/obj tree holds:
>>> [~] wjw > locate libc_non
>>> /usr/objs/amd64/usr/src10/lib/libc_nonshared
>>> /usr/objs/amd64/usr/src10/lib/libc_nonshared/.depend
>>> /usr/objs/amd64/usr/src10/lib/libc_nonshared/__iconv.o
>>> /usr/objs/amd64/usr/src10/lib/libc_nonshared/__iconv_free_list.o
>>> /usr/objs/amd64/usr/src10/lib/libc_nonshared/__iconv_get_list.o
>>> /usr/objs/amd64/usr/src10/lib/libc_nonshared/__stub.o
>>> /usr/objs/amd64/usr/src10/lib/libc_nonshared/iconv.o
>>> /usr/objs/amd64/usr/src10/lib/libc_nonshared/iconv_canonicalize.o
>>> /usr/objs/amd64/usr/src10/lib/libc_nonshared/iconv_close.o
>>> /usr/objs/amd64/usr/src10/lib/libc_nonshared/iconv_open.o
>>> /usr/objs/amd64/usr/src10/lib/libc_nonshared/iconv_open_into.o
>>> /usr/objs/amd64/usr/src10/lib/libc_nonshared/iconv_set_relocation_prefix.o
>>> /usr/objs/amd64/usr/src10/lib/libc_nonshared/iconvctl.o
>>> /usr/objs/amd64/usr/src10/lib/libc_nonshared/iconvlist.o
>>> /usr/objs/amd64/usr/src10/lib/libc_nonshared/libc_nonshared.a
>>> /usr/objs/amd64/usr/src10/tmp/usr/lib/libc_nonshared.a
>>>
>>> And I would expect csh to be build against:
>>> /usr/objs/amd64/usr/src10/tmp/usr/lib/libc_nonshared.a
>>>
>>> But for what happened, I conclude that it is linked against /usr/lib.
>>
>> During the early stages of buildworld, this is completely normal, and
>> expected.
> 
> I just manually went into /usr/src/lib/libc_nonshared and ran
> 	make
> 	make install
> 
> And now I'm trying to build world on a 1.8GHz atom, so that is slow....
> Even just compiling clang is already a serious undertaking.

Just a closing remark on the issue...

Compilation went thru, and I was able to install 10.1
Running it right now.

Thanx for the help,
--WjW




More information about the freebsd-stable mailing list