ошибка: неопределенная ссылка на ‘__gxx_personality_v0’ при связывании процедур Fortran и c ++ с использованием g ++ gfortran и cygwing

Я пытаюсь связать C ++ а также Фортран процедуры, но я получаю сообщение об ошибке: undefined reference to '__gxx_personality_v0'. Я нашел несколько постов, где люди находили ту же самую проблему, потому что они использовали компилятор gcc вместо g ++, однако в моем случае я использую г ++ компилятор и до сих пор я получаю эту проблему. Далее я объясню, что я сделал, чтобы кто-то с опытом мог хорошо понять проблему и помочь мне 🙂 Заранее спасибо !! Я буду признателен за вашу помощь … Я застрял на несколько часов из-за этого!

  1. Я скомпилировал подпрограммы C ++ (это работает без проблем)

    $ g++ -c read.cpp -o read.o
    $ g++ -c write.cpp -o write.o
    

2) Я скомпилировал подпрограммы и основную программу на Фортране (это тоже работает)

    $ gfortran -c main.f -o main.o

3) Я пытался связать обе части:

    $ gfortran -lm -lstdc++ main.o read.o write.o -o main_new.x

и вот где я получаю сообщение об ошибке:

    read.o:read.cpp:(.eh_frame+0x13): undefined reference to '__gxx_personality_v0'

write.o:write.cpp:(.eh_frame+0x4b):undefined reference to '__gxx_personality_v0'

/usr/lib/gcc/i686-pc-cygwin/4.8.2/../../../libcygwin.a(_cygwin_crt0_common.o):_cygwin_crt0_common.cc:(.data+0x4): undefined reference to `operator new[](unsigned int)'

/usr/lib/gcc/i686-pc-cygwin/4.8.2/../../../libcygwin.a(_cygwin_crt0_common.o):_cygwin_crt0_common.cc:(.data+0x8): undefined reference to `operator delete(void*)'

Похоже, что некоторые библиотеки по-прежнему отсутствуют или компилятор не может их найти, поэтому я подумал, что можно указать полный путь к библиотекам. Однако, когда я их искал, у меня было несколько путей, и я не Понятия не имею, какой из них я должен использовать:

$ find /usr -name libstdc++.a
/usr/lib/gcc/i686-pc-cygwin/4.8.2/libstdc++.a
/usr/lib/gcc/i686-pc-mingw32/4.7.3/debug/libstdc++.a
/usr/lib/gcc/i686-pc-mingw32/4.7.3/libstdc++.a
/usr/lib/gcc/i686-w64-mingw32/4.8.2/libstdc++.a
/usr/lib/gcc/x86_64-pc-cygwin/4.8.1/libstdc++.a
/usr/lib/gcc/x86_64-w64-mingw32/4.8.2/libstdc++.a

$ find /usr -name libm.a
/usr/i686-pc-mingw32/sys-root/mingw/lib/libm.a
/usr/i686-w64-mingw32/sys-root/mingw/lib/libm.a
/usr/x86_64-pc-cygwin/sys-root/usr/lib/libm.a
/usr/x86_64-w64-mingw32/sys-root/mingw/lib/libm.a
/usr/lib/libm.a

Я пробовал с первым путем для обеих библиотек ( $ gfortran -L/usr/i686-pc-mingw32/sys-root/mingw/lib/libm.a -L/usr/lib/gcc/i686-pc-cygwin/4.8.2/libstdc++.a read.o write.o main.o -o main_new.x) и все равно я получаю то же сообщение об ошибке, что и раньше …

Кто-нибудь знает, что происходит?

Еще раз спасибо!

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]