* 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