* 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
[parent not found: <20030704081407.GA19989@altlinux.ru>]
* [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