=?iso-8859-15?q?Fran=E7ois?= Pons <[EMAIL PROTECTED]> wrote:
>Raul Dias <[EMAIL PROTECTED]> writes:

>> The problem:
>> 
>> Using a C++ application compiling with one gcc that depends on
>> another C++ library that was compiled with another gcc will
>> __not__ work and probably segfaults.
>> 
>> This is the main issue discussed in this thread. :)
>> 
>> 
>> How do we know if a package is a c++ application/lib?
>> \
>> It will depends on libstdc++.so.XXXXX
>> 
>> 
>> How do we know what gcc was use to compile a c++ package?
>> 
>> the XXXX in the libstdc++.so.XXXX dependency is different 
>> to every gcc version/c++ ABI.
>> This also means that when the time comes and we get a final
>> ABI, new gccs will keep the same soname in the libstc++ lib.
>> 
>> 
>> How can urpmi know that a c++ package will not work in 
>> 
>> the system __even__ if the dependencies are met?
>> If a c++ package will be installed in the system, urpmi
>> should check for every package that provides its dependencies
>> to see if they also depends on a libstdc++.
>> If the libstdc++ which they depends are different, the package 
>> should not be installed.
>> 
>> 
>> Any thought about this?
>
>Hum, urpmi use rpm dependencies, which use effectively so name, so name should
>be changed if compatibility is broken.

And it is.  every incompatible ABI in gcc has a soname changed.
So, this is what can be used to track the issue down

>
>$ rpm -qR xalan-c | grep libstdc 
>libstdc++-libc6.2-2.so.3  
>
>$ ldd /usr/bin/testXPath | grep libstdc
>        libstdc++-libc6.2-2.so.3 => /usr/lib/libstdc++-libc6.2-2.so.3 (0x4083d000)
>
>$ objdump -x /usr/lib/libstdc++-libc6.2-2.so.3  | grep SONAME
>  SONAME      libstdc++-libc6.2-2.so.3
>
>How can we known more here ?

I will use qt2 as an example:

$ rpm -qR qt2 | grep libstd
libstdc++-libc6.2-2.so.3

$ rpm -q --whatprovides $(rpm -qR qt2 | grep libstd)
libstdc++-2.95.3-19cl

and of course, if you want to know which gcc generated this (not really needed):

$ rpm -q $(rpm -q --whatprovides $(rpm -qR qt2 | grep libstd) ) --qf "%{SOURCERPM}\n"
gcc-2.95.3-19cl.src.rpm

Btw, I did this on a CL system, not mdk. But the results should be equivalent.


Regards,

Raul Dias





>
>Fran�ois.
>


Reply via email to