[Comm] Re: gcc начал требовать personality

Oleg N. Kayunov =?iso-8859-1?q?okayunov_=CE=C1_mtu-net=2Eru?=
Сб Июл 5 13:33:30 MSD 2003


Alexey Voinov пишет:

>Oleg N. Kayunov wrote
>  
>
>>>>>>Вздумал перетранслировать программки на C, кои вполне нормально 
>>>>>>транслировались ещё в начале сего года (до установкиMaster 2.2).
>>>>>>Вдруг на НЕКОТОРЫХ (что совсем озадачивает) C-шных файлах начал 
>>>>>>получать сообщения вида:
>>>>>>======================================
>>>>>>Accerman.o(.eh_frame+0x11): undefined reference to 
>>>>>>`__gxx_personality_v0'
>>>>>>либо:
>>>>>>info.o(.gnu.linkonce.d.DW.ref.__gxx_personality_v0+0x0): undefined 
>>>>>>reference to `__gxx_personality_v0'
>>>>>>======================================
>>>>>>            
>>>>>>
>>>>>Может Вы используете g++ для компиляции этих программ?
>>>>>          
>>>>>
>>>> Фактически я думаю - да.
>>>>Учитывая расширения и принимаемую транслятором форму комментариев.
>>>>        
>>>>
>>>Судя по приведённому СС --- нет. :)
>>>Комметариии вида // в C --- gcc'изм и не является признаком C++
>>>      
>>>
>>   Ладно... Надо же...
>>   А расширение (cpp)?
>>    
>>
>А вот это как раз и говорит gcc, что исходник на C++
>
    Таки возвращаясь к исходному вопросу:
получается, что gcc транслировал Accerman.cpp именно как C++ программу?
Включая подход к именам функций?

>>   У меня. всякий раз когда я их (*.cpp) использовал одновременно с 
>>файлами поименованными как *.c начинались вопли насчёт нестыкуемости 
>>имён - т.е. *.cpp явно транслировались в C++ манере.
>>    
>>
>Так и есть. Так и должно быть.
>
    Ну и ладушки. Никто и не спорит.
Так как же оно (Accerman.cpp) у меня транслировалось (см. выше)?

>>   Бывало это, правда, до переустановки системы - ALM2.2. Может тут 
>>что-то и изменилось, не знаю.
>>    
>>
>Могу предложить только чётко определиться с используемыми языками и
>привести команды компиляции в соответствие с языками. Этого можно достичь
>либо давая правильные расширения файлам, либо указывая язык явно параметром
>-x c или -x c++.
>  
>
    Дык!!!
    Я таки не понял: ежели у меня gcc и так транслировал Accerman.cpp 
как C++ файл, то почему ситуация у У МЕНЯ изменилась после замены gcc на 
g++? И самое главное - почему У ВАС-ТО gcc оттранслировал и отлинковал 
всё без проблем (в отличие от меня)??? Это следствие того, что у Вас 
чуть более поздняя версия GCC (т.е. устранён некий хомут (он-же - баг)) 
или у Вас как-то по иному настроено окружение? Или попросту GCC 
уважает/боиться Вас больше чем меня?  :-)
    Без понимания оных нюансов трудновато как-то ЧЁТКО определятся (я 
ведь был вполне уверен, что и так транслирую как C++). Можно только 
шаманить.
Вы согласны?

-- 
== В действительности все обстоит совершенно иначе чем на самом деле. ==
	BR, Oleg N. Kayunov.





Подробная информация о списке рассылки community