Создание модуля Python C из исходников на Фортране в Ubuntu 10.04 LTS - PullRequest
0 голосов
/ 04 мая 2010

В проекте, над которым я работаю, мы используем модуль Python C, скомпилированный из Fortran с f2py . У меня не было проблем с его сборкой на 32-битной Windows 7 (с использованием mingw32), а на серверах он построен на 32-битной Linux. Но я недавно установил Ubuntu 10.04 LTS 64bit на свой ноутбук, который я использую для разработки, и когда я его собираю, я получаю много предупреждений (даже если я, очевидно, установил все библиотеки / компиляторы gcc / fortran), но он делает закончить сборку. Однако, когда я пытаюсь использовать встроенный модуль в приложении, большинство из них, кажется, работает нормально, но затем вылетает с ошибкой:

* обнаружен glibc * / home / botondus / Envs / gasit / bin / python: free (): недействительный следующий размер (быстрый): 0x0000000006a44760 ***

Предупреждения при запуске f2py -c -m имя_модуля ./fortran/source.f90

customize UnixCCompiler
customize UnixCCompiler using build_ext
customize GnuFCompiler
Could not locate executable g77
Found executable /usr/bin/f77
gnu: no Fortran 90 compiler found
gnu: no Fortran 90 compiler found
customize IntelFCompiler
Could not locate executable ifort
Could not locate executable ifc
customize LaheyFCompiler
Could not locate executable lf95
customize PGroupFCompiler
Could not locate executable pgf90
Could not locate executable pgf77
customize AbsoftFCompiler
Could not locate executable f90
absoft: no Fortran 90 compiler found
absoft: no Fortran 90 compiler found
absoft: no Fortran 90 compiler found
absoft: no Fortran 90 compiler found
absoft: no Fortran 90 compiler found
absoft: no Fortran 90 compiler found
customize NAGFCompiler
Found executable /usr/bin/f95
customize VastFCompiler
customize GnuFCompiler
gnu: no Fortran 90 compiler found
gnu: no Fortran 90 compiler found
customize CompaqFCompiler
Could not locate executable fort
customize IntelItaniumFCompiler
Could not locate executable efort
Could not locate executable efc
customize IntelEM64TFCompiler
customize Gnu95FCompiler
Found executable /usr/bin/gfortran
customize Gnu95FCompiler
customize Gnu95FCompiler using build_ext

Я попытался собрать 32-битную версию, установив мультибиблиотечные пакеты gfortran и запустив f2py с опцией -m32 (но безуспешно):

f2py -c -m имя_модуля ./fortran/source.f90 --f77flags = "- m32" --f90flags = "- m32"

Любые предложения о том, что я мог бы попытаться собрать 32-битную версию или правильно построить 64-битную версию?

Редактировать : Похоже, что он вылетает прямо в конце подпрограммы. «Запись» выполняется нормально ... что странно.

     write(6,*)'Eh=',Eh

end subroutine calcolo_involucro

Полная обратная трассировка очень длинная, и я не уверен, поможет ли это, но вот она:

*** glibc detected *** /home/botondus/Envs/gasit/bin/python: free(): invalid next size (fast): 0x0000000007884690 ***
======= Backtrace: =========
/lib/libc.so.6(+0x775b6)[0x7fe24f8f05b6]
/lib/libc.so.6(cfree+0x73)[0x7fe24f8f6e53]
/usr/local/lib/python2.6/dist-packages/numpy/core/multiarray.so(+0x4183c)[0x7fe24a18183c]
/home/botondus/Envs/gasit/bin/python[0x46a50d]
/usr/local/lib/python2.6/dist-packages/numpy/core/multiarray.so(+0x4fbd8)[0x7fe24a18fbd8]
/usr/local/lib/python2.6/dist-packages/numpy/core/multiarray.so(+0x5aded)[0x7fe24a19aded]
/home/botondus/Envs/gasit/bin/python(PyEval_EvalFrameEx+0x516e)[0x4a7c5e]
/home/botondus/Envs/gasit/bin/python(PyEval_EvalFrameEx+0x5a60)[0x4a8550]
/home/botondus/Envs/gasit/bin/python(PyEval_EvalCodeEx+0x911)[0x4a9671]
/home/botondus/Envs/gasit/bin/python[0x537620]
/home/botondus/Envs/gasit/bin/python(PyObject_Call+0x47)[0x41f0c7]
/home/botondus/Envs/gasit/bin/python[0x427dff]
/home/botondus/Envs/gasit/bin/python(PyObject_Call+0x47)[0x41f0c7]
/home/botondus/Envs/gasit/bin/python[0x477bff]
/home/botondus/Envs/gasit/bin/python[0x46f47f]
/home/botondus/Envs/gasit/bin/python(PyObject_Call+0x47)[0x41f0c7]
/home/botondus/Envs/gasit/bin/python(PyEval_EvalFrameEx+0x4888)[0x4a7378]
/home/botondus/Envs/gasit/bin/python(PyEval_EvalCodeEx+0x911)[0x4a9671]
/home/botondus/Envs/gasit/bin/python(PyEval_EvalFrameEx+0x4d19)[0x4a7809]
/home/botondus/Envs/gasit/bin/python(PyEval_EvalCodeEx+0x911)[0x4a9671]
/home/botondus/Envs/gasit/bin/python(PyEval_EvalFrameEx+0x4d19)[0x4a7809]
/home/botondus/Envs/gasit/bin/python(PyEval_EvalCodeEx+0x911)[0x4a9671]
/home/botondus/Envs/gasit/bin/python[0x537620]
/home/botondus/Envs/gasit/bin/python(PyObject_Call+0x47)[0x41f0c7]
/home/botondus/Envs/gasit/bin/python(PyEval_CallObjectWithKeywords+0x43)[0x4a1b03]
/usr/local/lib/python2.6/dist-packages/numpy/core/multiarray.so(+0x2ee94)[0x7fe24a16ee94]
/home/botondus/Envs/gasit/bin/python(_PyObject_Str+0x61)[0x454a81]
/home/botondus/Envs/gasit/bin/python(PyObject_Str+0xa)[0x454b3a]
/home/botondus/Envs/gasit/bin/python[0x461ad3]
/home/botondus/Envs/gasit/bin/python[0x46f3b3]
/home/botondus/Envs/gasit/bin/python(PyObject_Call+0x47)[0x41f0c7]
/home/botondus/Envs/gasit/bin/python(PyEval_EvalFrameEx+0x4888)[0x4a7378]
/home/botondus/Envs/gasit/bin/python(PyEval_EvalCodeEx+0x911)[0x4a9671]
/home/botondus/Envs/gasit/bin/python(PyEval_EvalFrameEx+0x4d19)[0x4a7809]
/home/botondus/Envs/gasit/bin/python(PyEval_EvalFrameEx+0x5a60)[0x4a8550]
======= Memory map: ========
00400000-0061c000 r-xp 00000000 08:05 399145                             /home/botondus/Envs/gasit/bin/python
0081b000-0081c000 r--p 0021b000 08:05 399145                             /home/botondus/Envs/gasit/bin/python
0081c000-0087e000 rw-p 0021c000 08:05 399145                             /home/botondus/Envs/gasit/bin/python
0087e000-0088d000 rw-p 00000000 00:00 0 
01877000-07a83000 rw-p 00000000 00:00 0                                  [heap]
7fe240000000-7fe240021000 rw-p 00000000 00:00 0 
7fe240021000-7fe244000000 ---p 00000000 00:00 0 
7fe247631000-7fe2476b1000 r-xp 00000000 08:03 140646                     /usr/lib/libfreetype.so.6.3.22
7fe2476b1000-7fe2478b1000 ---p 00080000 08:03 140646                     /usr/lib/libfreetype.so.6.3.22
7fe2478b1000-7fe2478b6000 r--p 00080000 08:03 140646                     /usr/lib/libfreetype.so.6.3.22
7fe2478b6000-7fe2478b7000 rw-p 00085000 08:03 140646                     /usr/lib/libfreetype.so.6.3.22
7fe2478b7000-7fe2478bb000 r-xp 00000000 08:03 263882                     /usr/lib/python2.6/dist-packages/PIL/_imagingft.so
7fe2478bb000-7fe247aba000 ---p 00004000 08:03 263882                     /usr/lib/python2.6/dist-packages/PIL/_imagingft.so
7fe247aba000-7fe247abb000 r--p 00003000 08:03 263882                     /usr/lib/python2.6/dist-packages/PIL/_imagingft.so
7fe247abb000-7fe247abc000 rw-p 00004000 08:03 263882                     /usr/lib/python2.6/dist-packages/PIL/_imagingft.so
7fe247abc000-7fe247abf000 r-xp 00000000 08:03 266773                     /usr/lib/python2.6/lib-dynload/_bytesio.so
7fe247abf000-7fe247cbf000 ---p 00003000 08:03 266773                     /usr/lib/python2.6/lib-dynload/_bytesio.so
7fe247cbf000-7fe247cc0000 r--p 00003000 08:03 266773                     /usr/lib/python2.6/lib-dynload/_bytesio.so
7fe247cc0000-7fe247cc1000 rw-p 00004000 08:03 266773                     /usr/lib/python2.6/lib-dynload/_bytesio.so
7fe247cc1000-7fe247cc5000 r-xp 00000000 08:03 266786                     /usr/lib/python2.6/lib-dynload/_fileio.so
7fe247cc5000-7fe247ec4000 ---p 00004000 08:03 266786                     /usr/lib/python2.6/lib-dynload/_fileio.so
7fe247ec4000-7fe247ec5000 r--p 00003000 08:03 266786                     /usr/lib/python2.6/lib-dynload/_fileio.so
7fe247ec5000-7fe247ec6000 rw-p 00004000 08:03 266786                     /usr/lib/python2.6/lib-dynload/_fileio.so
7fe247ec6000-7fe24800c000 r-xp 00000000 08:03 141358                     /usr/lib/libxml2.so.2.7.6
7fe24800c000-7fe24820b000 ---p 00146000 08:03 141358                     /usr/lib/libxml2.so.2.7.6
7fe24820b000-7fe248213000 r--p 00145000 08:03 141358                     /usr/lib/libxml2.so.2.7.6
7fe248213000-7fe248215000 rw-p 0014d000 08:03 141358                     /usr/lib/libxml2.so.2.7.6
7fe248215000-7fe248216000 rw-p 00000000 00:00 0 
7fe248216000-7fe248229000 r-xp 00000000 08:03 140632                     /usr/lib/libexslt.so.0.8.15
7fe248229000-7fe248428000 ---p 00013000 08:03 140632                     /usr/lib/libexslt.so.0.8.15
7fe248428000-7fe248429000 r--p 00012000 08:03 140632                     /usr/lib/libexslt.so.0.8.15
7fe248429000-7fe24842a000 rw-p 00013000 08:03 140632                     /usr/lib/libexslt.so.0.8.15
7fe24842a000-7fe248464000 r-xp 00000000 08:03 141360                     /usr/lib/libxslt.so.1.1.26
7fe248464000-7fe248663000 ---p 0003a000 08:03 141360                     /usr/lib/libxslt.so.1.1.26
7fe248663000-7fe248664000 r--p 00039000 08:03 141360                     /usr/lib/libxslt.so.1.1.26
7fe248664000-7fe248665000 rw-p 0003a000 08:03 141360                     /usr/lib/libxslt.so.1.1.26
7fe248665000-7fe24876e000 r-xp 00000000 08:03 534240                     /usr/local/lib/python2.6/dist-packages/lxml/etree.so
7fe24876e000-7fe24896d000 ---p 00109000 08:03 534240                     /usr/local/lib/python2.6/dist-packages/lxml/etree.so
7fe24896d000-7fe24896e000 r--p 00108000 08:03 534240                     /usr/local/lib/python2.6/dist-packages/lxml/etree.so
7fe24896e000-7fe248999000 rw-p 00109000 08:03 534240                     /usr/local/lib/python2.6/dist-packages/lxml/etree.so
7fe248999000-7fe2489a7000 rw-p 00000000 00:00 0 
7fe2489a7000-7fe2489bd000 r-xp 00000000 08:03 132934                     /lib/libgcc_s.so.1

1 Ответ

0 голосов
/ 05 мая 2010

К счастью, удалось решить эту проблему. Кажется, я не заметил, что версия пакета numpy в репозиториях для Ubuntu 10.04 - только v1.3.0. Я удалил numpy, затем собрал v1.4.1 из исходного кода. После этого повторный запуск f2py выдал те же предупреждения, однако использование модуля больше не приводит к сбою.

...