Мистерия
8 отговора
459 прегледа
Мистерия
Здравейте. Случва ми се тук една странност и ми идва да си изям клавиатурата. Някой има ли идея защо:
Дистрибуцията е Debian testing. Някой има ли идея защо се подменя символната връзка, мамка й ...
Поли иска континентче
masklin:/usr/local/lib# ls -l libodbc++.so*
lrwxrwxrwx 1 root staff 14 2006-01-06 13:41 libodbc++.so -> libodbc++.so.4
lrwxrwxrwx 1 root staff 23 2006-02-20 18:10 libodbc++.so.4 -> libodbc++.so.4.0.0-gcc3
lrwxrwxrwx 1 root staff 23 2006-01-30 12:21 libodbc++.so.4.0.0 -> libodbc++.so.4.0.0-gcc3
-rwxr-xr-x 1 root staff 1906634 2006-01-06 13:37 libodbc++.so.4.0.0-gcc3
-rwxr-xr-x 1 root staff 1272652 2006-01-06 13:24 libodbc++.so.4.0.0-gcc4
masklin:/usr/local/lib# ldconfig
masklin:/usr/local/lib# ls -l libodbc++.so*
lrwxrwxrwx 1 root staff 14 2006-01-06 13:41 libodbc++.so -> libodbc++.so.4
lrwxrwxrwx 1 root staff 23 2006-02-20 18:13 libodbc++.so.4 -> libodbc++.so.4.0.0-gcc4
lrwxrwxrwx 1 root staff 23 2006-01-30 12:21 libodbc++.so.4.0.0 -> libodbc++.so.4.0.0-gcc3
-rwxr-xr-x 1 root staff 1906634 2006-01-06 13:37 libodbc++.so.4.0.0-gcc3
-rwxr-xr-x 1 root staff 1272652 2006-01-06 13:24 libodbc++.so.4.0.0-gcc4
Дистрибуцията е Debian testing. Някой има ли идея защо се подменя символната връзка, мамка й ...
Поли иска континентче
Re: Мистерия
zastoto :
/*
ldconfig checks the header and file names of the libraries it encounters when determining which versions should have their links updated.
*/
sega napravi apt-get remove manpages --purge taka i taka ne gi chetes
DrFrancky
/*
ldconfig checks the header and file names of the libraries it encounters when determining which versions should have their links updated.
*/
sega napravi apt-get remove manpages --purge taka i taka ne gi chetes
DrFrancky
Ха
За мен е изненада, че ldconfig пипа връзките. Изглежда обаче не си върши работата докрая, както можеш да видиш със следващия link, който е към същата библиотека.
Друг въпрос, тогава. Имам инсталирани едновременно gcc3 и gcc4 - поради еди-какви си причини трябва да използвам различните версии за компилиране на различни версии на моя софтуер. Съответно поради различното ABI (поне така предполагам) компилираната с едната версия на gcc библиотека libodbc++ не се свъзва с кода, който я използва, когато той се компилира с другата версия на gcc. А както се досещаш, в /usr/local/lib може да стои само едни файл libodbc++.so и оттук и наличието на двете версии, с link, който посочва коя да се използва в момента.
Разбира се, мога да наслагам -lodbc++-3 в makefile-те, но не искам. Пък и не това е толкова интересното.
Въпросът ми е как са компилирани системните библиотеки, за да могат да се свързват и от gcc3, и от gcc4. Знам, че отговорът го има някъде в google, но ако някой знае, ще ми спести времете за търсене и ще помогне и на другите незрящи като мен.
П.П. Ей Франки, много си бърз в оценките. Имахме тук един админ, който също като теб не траеше и всичко набързо го правеше
Куре, къде си куре 
Поли иска континентче
Друг въпрос, тогава. Имам инсталирани едновременно gcc3 и gcc4 - поради еди-какви си причини трябва да използвам различните версии за компилиране на различни версии на моя софтуер. Съответно поради различното ABI (поне така предполагам) компилираната с едната версия на gcc библиотека libodbc++ не се свъзва с кода, който я използва, когато той се компилира с другата версия на gcc. А както се досещаш, в /usr/local/lib може да стои само едни файл libodbc++.so и оттук и наличието на двете версии, с link, който посочва коя да се използва в момента.
Разбира се, мога да наслагам -lodbc++-3 в makefile-те, но не искам. Пък и не това е толкова интересното.
Въпросът ми е как са компилирани системните библиотеки, за да могат да се свързват и от gcc3, и от gcc4. Знам, че отговорът го има някъде в google, но ако някой знае, ще ми спести времете за търсене и ще помогне и на другите незрящи като мен.
П.П. Ей Франки, много си бърз в оценките. Имахме тук един админ, който също като теб не траеше и всичко набързо го правеше
Поли иска континентче
Re: Ха
nikoi nikoga ne e mislil da imas niakolko libc-ta na edno miasto
stom si napravil takava porazia ste ti se nalozi da ispolzvas hakove
ne vizdam susto taka i kakvo mu e loshoto na make file ? nali e tochno za tova
tocho za tova sa i tezi links .. kato smenis nekoi lib s po nova versia da moze da raboti .. smiata se che siaka sledvasta versia e savmestima s malko po starata i vsichko bi triabvalo da raboti
ako ne raboti se predpolaga che si napravil nekfa mizeria i stom si stignal do tam znachi znaes kakvo pravis i kak da go pravis
DrFrancky
stom si napravil takava porazia ste ti se nalozi da ispolzvas hakove
ne vizdam susto taka i kakvo mu e loshoto na make file ? nali e tochno za tova
tocho za tova sa i tezi links .. kato smenis nekoi lib s po nova versia da moze da raboti .. smiata se che siaka sledvasta versia e savmestima s malko po starata i vsichko bi triabvalo da raboti
ako ne raboti se predpolaga che si napravil nekfa mizeria i stom si stignal do tam znachi znaes kakvo pravis i kak da go pravis
DrFrancky
Не бе, чакай
Не съм правил нищо сравнимо с няколко libc, защо реши така?
Просто съм сложил в /usr/local/lib два варианта на C++ библиотека, компилирана с g++-3.3 и g++-4.0. След което правя символна връзка с "официалното" име на библиотеката според използвания компилатор, за да може навсякъде да се свързва правилната.
И причината да им конфликт е различния начин, по който работи mangling-a в двата компилатора, с други думи - C++ функциите в обектния файл се кръщават различно от g++-3 и g++-4. Ако направя библиотеката си с g++-3, не мога да свързвам с нея програма, компилирана с g++-4, както и обратното.
Точно тук ми е въпроса - като как се прави една библиотека така, че имената в нея да се ядат и от g++-3 и от g++-4. Пример за такива библиотеки са да кажем libboost*
Поли иска континентче
Просто съм сложил в /usr/local/lib два варианта на C++ библиотека, компилирана с g++-3.3 и g++-4.0. След което правя символна връзка с "официалното" име на библиотеката според използвания компилатор, за да може навсякъде да се свързва правилната.
И причината да им конфликт е различния начин, по който работи mangling-a в двата компилатора, с други думи - C++ функциите в обектния файл се кръщават различно от g++-3 и g++-4. Ако направя библиотеката си с g++-3, не мога да свързвам с нея програма, компилирана с g++-4, както и обратното.
Точно тук ми е въпроса - като как се прави една библиотека така, че имената в нея да се ядат и от g++-3 и от g++-4. Пример за такива библиотеки са да кажем libboost*
Поли иска континентче
Re: Не бе, чакай
Blah, пак си са сменяли C++ ABI-то w gcc4? Как може някой да смята C++ за нормален език като едно ABI не може да остане едно и също за повече от 3 месеца :( Добре, че не ми се налага да го ползвам :)
Пак, ама гледай сега
То е за хубаво, значи
Открили са няколко бъгчета и е нямало как ... Та надявам се да няма повече буболечки, с други думи.
Междувременно, викайки Неволята открих, че gcc3.4 ми върши чудна работа - хем много прилича на gcc3.3, с което се компилира софтуера ми, хем използва новото gcc4 ABI. Мислят за мен хората, значи
В крайна сметка не успях да открия как успяват да поддържат 3.3 и 4.0 съвместимост в C++ библиотеките, но здраве. Ако някой има желание да чете ... ето от тук може да изкочи заека.
Поли иска континентче
Междувременно, викайки Неволята открих, че gcc3.4 ми върши чудна работа - хем много прилича на gcc3.3, с което се компилира софтуера ми, хем използва новото gcc4 ABI. Мислят за мен хората, значи
В крайна сметка не успях да открия как успяват да поддържат 3.3 и 4.0 съвместимост в C++ библиотеките, но здраве. Ако някой има желание да чете ... ето от тук може да изкочи заека.
Поли иска континентче
Re: Пак, ама гледай сега
не знам как е в дебиан, отдавна не съм пипал, и нямам наоколо.. но.. я опитай това:
gcc-config -l
the lord of destruction
gcc-config -l
the lord of destruction
Редактирано от seo на
Re: Ха
Също ако беше прочел man страницата на ldconfig за която DrFrancky ти намекна щеше да видиш:
"-X Don't update links. Unless -N is also specified, the cache is still rebuilt."
"-X Don't update links. Unless -N is also specified, the cache is still rebuilt."