ALT Linux Community general discussions
 help / color / mirror / Atom feed
* Re: [Comm] gcc начал требовать personality
  @ 2003-07-04  5:13 ` Alexey Voinov
  2003-07-04  7:54   ` [Comm] " Oleg N. Kayunov
  0 siblings, 1 reply; 7+ messages in thread
From: Alexey Voinov @ 2003-07-04  5:13 UTC (permalink / raw)
  To: community

[-- Attachment #1: Type: text/plain, Size: 996 bytes --]

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++ для компиляции этих программ?
__gxx_personality это вообще-то атрибут C++.
Если будет больше исходной информации (например исходник проблемной программы),
то можно будет сказать больше.

-- 
Best Regards!           | Когда вам платят за работу, надо по крайней мере
Alexey Voinov           | делать вид, что вы работаете...
                        |                         Б.Виан "Осень в Пекине"
voins@voins.program.ru
vns@altlinux.ru


[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Comm] Re: gcc начал требовать personality
  2003-07-04  5:13 ` [Comm] gcc начал требовать personality Alexey Voinov
@ 2003-07-04  7:54   ` Oleg N. Kayunov
    0 siblings, 1 reply; 7+ messages in thread
From: Oleg N. Kayunov @ 2003-07-04  7:54 UTC (permalink / raw)
  To: community

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++ для компиляции этих программ?
>
    Фактически я думаю - да.
Учитывая расширения и принимаемую транслятором форму комментариев.

>__gxx_personality это вообще-то атрибут C++.
>Если будет больше исходной информации (например исходник проблемной программы),
>то можно будет сказать больше.
>
    Не хотелось грузить рассылку, но что поделаешь...
Программка (та, что Accerman, ну сугубо игрушечная, зато полная - с main):
================================================================
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

typedef long int li;
li Cl=0;
li af(li z, li x, li y)
{Cl++;
 switch (z)
 {
  case 0: if (x<=0) return y;
      else return af(0, x-1, y)+1;
  case 1: if (x==0) return 0; else break;
 }
 if ((z>=2) && (x==0)) return 1;
 return af(z-1, af(z, x-1, y), y);
}

li a(li x) {return af(x, x, x);}

int main(int argc, char* argv[])
{int z, x, y; li r;
// for (int n=0; n<=4; n++) printf("%i -> %li\n",n,a(n));

 for (z=0; z<=3; z++)
 {printf("============ Z = %i\n",z);
  for (x=0; x<=4; x++)
    {printf("X=%i: ",x);
    for (y=0; y<=5; y++)
    {Cl=0; r=af(z,x,y); printf("%i->%4li(%6li),%s",y,r,Cl,((z>=3)&&(x>2) 
?"\n":" ") );}
     printf("\n");
    }
 }
 return 0;
}
================================================================

В Makefile установлены:
CC=gcc
CFLAGS := -pipe -c -O3 -MD
LDFLAGS := -pipe
(-O3 пробовал, с перепугу, отключать - без толку)

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



^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Comm] Re: gcc начал требовать personality
  @ 2003-07-04 10:01       ` Oleg N. Kayunov
  2003-07-04 10:54         ` Alexey Voinov
  0 siblings, 1 reply; 7+ messages in thread
From: Oleg N. Kayunov @ 2003-07-04 10:01 UTC (permalink / raw)
  To: community

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)?
    У меня. всякий раз когда я их (*.cpp) использовал одновременно с 
файлами поименованными как *.c начинались вопли насчёт нестыкуемости 
имён - т.е. *.cpp явно транслировались в C++ манере.
    Бывало это, правда, до переустановки системы - ALM2.2. Может тут 
что-то и изменилось, не знаю.

>  
>
>>>__gxx_personality это вообще-то атрибут C++.
>>>Если будет больше исходной информации (например исходник проблемной 
>>>программы),
>>>то можно будет сказать больше.
>>>      
>>>
>>   Не хотелось грузить рассылку, но что поделаешь...
>>Программка (та, что Accerman, ну сугубо игрушечная, зато полная - с main):
>>    
>>
>
><skip>
>  
>
>>В Makefile установлены:
>>CC=gcc
>>CFLAGS := -pipe -c -O3 -MD
>>LDFLAGS := -pipe
>>    
>>
>У меня скомпилировалось и запустилось без сообщений.
>
    Именно с gcc?? (См. ниже)

>$ gcc --version | grep GCC
>i586-alt-linux-gcc (GCC) 3.2.3 (ALT Linux, build 3.2.3-alt1)
>  
>
    Откель дровишки-то? Не из Сизифа, часом?
    Я-то всё ставил из дистрибутива и у меня:
$ gcc --version | grep GCC
gcc (GCC) 3.2.1 (ALT Linux, build 3.2.1-alt2)
    Есть разница...


        НО!
Поставив CC := g++ я без проблем оттранслировал и Accerman-а и пакет 
включающий info.cpp!
Однако!
Шаманизм на марше, понимаешь.... (См. выше)

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




^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Comm] Re: gcc начал требовать personality
  2003-07-04 10:01       ` Oleg N. Kayunov
@ 2003-07-04 10:54         ` Alexey Voinov
  2003-07-05  9:33           ` Oleg N. Kayunov
  0 siblings, 1 reply; 7+ messages in thread
From: Alexey Voinov @ 2003-07-04 10:54 UTC (permalink / raw)
  To: community

[-- Attachment #1: Type: text/plain, Size: 1763 bytes --]

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++

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

>    Бывало это, правда, до переустановки системы - ALM2.2. Может тут 
> что-то и изменилось, не знаю.
Могу предложить только чётко определиться с используемыми языками и
привести команды компиляции в соответствие с языками. Этого можно достичь
либо давая правильные расширения файлам, либо указывая язык явно параметром
-x c или -x c++.

-- 
Best Regards!           | Когда вам платят за работу, надо по крайней мере
Alexey Voinov           | делать вид, что вы работаете...
                        |                         Б.Виан "Осень в Пекине"
voins@voins.program.ru
vns@altlinux.ru


[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Comm] Re: gcc начал требовать personality
  2003-07-04 10:54         ` Alexey Voinov
@ 2003-07-05  9:33           ` Oleg N. Kayunov
  2003-07-05 16:00             ` Alexey Voinov
  0 siblings, 1 reply; 7+ messages in thread
From: Oleg N. Kayunov @ 2003-07-05  9:33 UTC (permalink / raw)
  To: community

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.




^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Comm] Re: gcc начал требовать personality
  2003-07-05  9:33           ` Oleg N. Kayunov
@ 2003-07-05 16:00             ` Alexey Voinov
  2003-07-05 18:04               ` Oleg N. Kayunov
  0 siblings, 1 reply; 7+ messages in thread
From: Alexey Voinov @ 2003-07-05 16:00 UTC (permalink / raw)
  To: community

[-- Attachment #1: Type: text/plain, Size: 2165 bytes --]

Oleg N. Kayunov wrote
> >>>Комметариии вида // в C --- gcc'изм и не является признаком C++
> >>  Ладно... Надо же...
> >>  А расширение (cpp)?
> >А вот это как раз и говорит gcc, что исходник на C++
>    Таки возвращаясь к исходному вопросу:
> получается, что gcc транслировал Accerman.cpp именно как C++ программу?
> Включая подход к именам функций?
конечно, и об этом написано в info gcс, если утановлен пакет gcc3.2-doc

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

Если используется g++, то при линковке добавляется несколько бибилиотек,
стандартных для C++.  одной из этих библиотек (а именно в libsupc++)
определён символ __gxx_personality_v0.


>    Без понимания оных нюансов трудновато как-то ЧЁТКО определятся (я 
> ведь был вполне уверен, что и так транслирую как C++). Можно только 
> шаманить.
> Вы согласны?
Для того, чтобы грамотно смешивать C и C++  в рамках одной программы имеет
смысл ознакомиться со стандартом. В противном случае проблемы неизбежны.


-- 
Best Regards!           | Когда вам платят за работу, надо по крайней мере
Alexey Voinov           | делать вид, что вы работаете...
                        |                         Б.Виан "Осень в Пекине"
voins@voins.program.ru
vns@altlinux.ru


[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Comm] Re: gcc начал требовать personality
  2003-07-05 16:00             ` Alexey Voinov
@ 2003-07-05 18:04               ` Oleg N. Kayunov
  0 siblings, 0 replies; 7+ messages in thread
From: Oleg N. Kayunov @ 2003-07-05 18:04 UTC (permalink / raw)
  To: community

Alexey Voinov пишет:

>Oleg N. Kayunov wrote
>  
>
>>>>>Комметариии вида // в C --- gcc'изм и не является признаком C++
>>>>>          
>>>>>
>>>> Ладно... Надо же...
>>>> А расширение (cpp)?
>>>>        
>>>>
>>>А вот это как раз и говорит gcc, что исходник на C++
>>>      
>>>
>>   Таки возвращаясь к исходному вопросу:
>>получается, что gcc транслировал Accerman.cpp именно как C++ программу?
>>Включая подход к именам функций?
>>    
>>
>конечно, и об этом написано в info gcс, если утановлен пакет gcc3.2-doc
>
      Да я это и так ещё раньше понял. Потому и удивляюсь (см. ниже, о
логичности).

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

>Если используется g++, то при линковке добавляется несколько бибилиотек,
>стандартных для C++.
>
      Т.е. gcc создаёт из *.cpp объектный файл с C++ вызовами, но когда
начинает его линковать, то в C++ - ые библиотеки не смотрит? О-о-очень
логично, но придётся запомнить. :-((

>  одной из этих библиотек (а именно в libsupc++)
>определён символ __gxx_personality_v0.
>
      Опцию -lsupc++ в случае чего поставить? ;-)

>>   Без понимания оных нюансов трудновато как-то ЧЁТКО определятся (я 
>>ведь был вполне уверен, что и так транслирую как C++). Можно только 
>>шаманить.
>>Вы согласны?
>>    
>>
>Для того, чтобы грамотно смешивать C и C++  в рамках одной программы имеет
>смысл ознакомиться со стандартом.
>
      Дык!!!
Да где же это я в этом самом Accerman.cpp что-то с чем-то смешать
умудрился??
Можно ткнуть пальцем?
Нет, ну честно - совсем не понимаю. Mea culpa, однако.
Потому и непонятно - куда смотреть-то. С чего начинать.

> В противном случае проблемы неизбежны.
>  
>
      Вот уж в этом-то сомневаться никак не приходится.

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





^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2003-07-05 18:04 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-07-04  5:13 ` [Comm] gcc начал требовать personality Alexey Voinov
2003-07-04  7:54   ` [Comm] " Oleg N. Kayunov
2003-07-04 10:01       ` Oleg N. Kayunov
2003-07-04 10:54         ` Alexey Voinov
2003-07-05  9:33           ` Oleg N. Kayunov
2003-07-05 16:00             ` Alexey Voinov
2003-07-05 18:04               ` Oleg N. Kayunov

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git