Hi,

I already reported that ICA iteration 1 and 2 did not
have the same libgmpxx.so.4.2.3. I have investigated
a little more.
Maybe I should recall what ICA is:
-First build as per chapter 6 instructions.
-Remove /tools, copy the / hierarchy into some directory, say iteration1
-then start again The build of chapter 6 packages, but using
the tools in /usr.
Normally, you should end up with the same files. There are always
some discrepancies, mainly because of timestamps. ICA does a
diff on ASCII files and only checks whether binary files differ.
For ELF files, I usually compare the results of readelf -a.
ld.so.cache can be printed. The only whose content is mysterious
and which differs on each iteration is locale-archive... Its format
seems to be undocumented. I have not checked glibc sources though.

Concerning libgmpxx (the c++ bindings of gmp), Here is the result of
ICA:
Binary files iteration-1/usr/lib/libgmpxx.so.4.2.3 and
iteration-2/usr/lib/libgmpxx.so.4.2.3 differ.
Furthermore, readelf -a show that there are more symbols in the library
after iteration2.
Also comparing the logs gives that the -static flag does not work
for g++.

Now It is easy to unpack gmp just after binutils build and make the
following test:
root:/sources# echo 'main(){}' | g++ -xc++ -static -
/tools/lib/gcc/x86_64-unknown-linux-gnu/4.6.2/../../../../x86_64-unknow
n-linux-gnu/bin/ld: cannot find -lstdc++
collect2: ld returned 1 exit status

Actually:
echo 'main(){}' | g++ -xc++ -v -
gives [...]
LIBRARY_PATH=/tools/lib/gcc/x86_64-unknown-linux-gnu/4.6.2/:/tools/lib/gcc/x86_
64-unknown-linux-gnu/4.6.2/../../../../x86_64-unknown-linux-gnu/lib/:/usr/lib/

This means that /tools/lib is not searched. But this where libstdc++.a 
resides.

I do not want to add /tools/lib to the library path (otherwise, it would 
link
against the wrong glibc). But since there is a special path for gcc 
libraries
(libgcc resides in/tools/lib/gcc/x86_64-unknown-linux-gnu/4.6.2/),
maybe link libstdc++ to this directory, something like:
ln -s /tools/lib/libstdc++.a `dirname $(gcc 
--print-libgcc-file-name)`/libstdc++.a
could be added to the "readjusting" instructions. After doing that,
gmp's configure finds that 'g++ -static' works. Whether it introduces
other problems, I have not tested yet.

I try ICA again with that trick...

Regards
Pierre


-- 
http://linuxfromscratch.org/mailman/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to