[Pythonmac-SIG] F2PY, F90, and Mac os x Tiger: linking problem

Louis Wicker Louis.Wicker at noaa.gov
Tue Dec 6 04:51:10 CET 2005


All:

Back in April I upgraded to Tiger, and I should have known better.

I cannot get any f90/5 programs to link with f2py (except that I have  
not tried the g95/gfortran compilers).

This problem started when I "upgraded" to Tiger from 10.3.9.

I thought I would ask over to here to see if anyone has any ideas.

I get the same linking problem using the XLF, Absoft 9.2, and even  
the NAG compiler.
I can get g77 programs to compile and link correctly.

Here is the linking problem...it occurs at the end of the f2py  
process (see full output below).

/usr/bin/ld: /usr/lib/crt1.o has external relocation entries in non-
writable section (__TEXT,__text) for symbols:
__mh_execute_header

This external relocation problem exists for all of the above named  
compilers.  I am using gcc 3.3.
My online research and my simple brain has figured out this is  
something to do with the gcc libs,
and the fact that something changed with 10.4.  The NAG README hints  
that something is weird with
Tiger and that they are temporarily supporting a "-unshared" flag -  
which I think allows me to link statically
somehow to a dynamic library.  I can successfully link using that  
flag, but the fortran module is dead when I import it
into python (it imports, but nothing happens when I try to access it).

This occurs with Python 2.3.5 and 2.4.1.  I cannot find anything  
anywhere on how to deal with this.

I have tried tricky other things, like compiling with f90 and linking  
with g77 or gcc, but I get
other types of errors.

Any thoughts would be appreciated, as this is irritating the hell out  
of me (for the third time this year).

Lou

======= Full output ====


f2py --fcompiler=ibm -c -m hello hello.f
numpy_info:
    FOUND:
      define_macros = [('NUMERIC_VERSION', '"\\"24.0b2\\""')]
      include_dirs = ['/System/Library/Frameworks/Python.framework/
Versions/2.3/include/python2.3']

running build
running config_fc
running build_src
building extension "hello" sources
f2py:> /tmp/tmpEAl_LK/src/hellomodule.c
creating /tmp/tmpEAl_LK
creating /tmp/tmpEAl_LK/src
Reading fortran codes...
          Reading file 'hello.f'
Post-processing...
          Block: hello
                          Block: foo
Post-processing (stage 2)...
Building modules...
          Building module "hello"...
                  Constructing wrapper function "foo"...
                    foo(a)
          Wrote C/API module "hello" to file "/tmp/tmpEAl_LK/src/
hellomodule.c"
    adding '/tmp/tmpEAl_LK/src/fortranobject.c' to sources.
    adding '/tmp/tmpEAl_LK/src' to include_dirs.
copying /System/Library/Frameworks/Python.framework/Versions/2.3/lib/
python2.3/site-packages/f2py2e/src/fortranobject.c -> /tmp/tmpEAl_LK/src
copying /System/Library/Frameworks/Python.framework/Versions/2.3/lib/
python2.3/site-packages/f2py2e/src/fortranobject.h -> /tmp/tmpEAl_LK/src
running build_ext
customize UnixCCompiler
customize UnixCCompiler using build_ext
customize IbmFCompiler
customize IbmFCompiler using build_ext
building 'hello' extension
compiling C sources
gcc options: '-fno-strict-aliasing -Wno-long-double -no-cpp-precomp -
mno-fused-madd -fno-common -dynamic -DNDEBUG -g -O3 -Wall -Wstrict-
prototypes'
creating /tmp/tmpEAl_LK/tmp
creating /tmp/tmpEAl_LK/tmp/tmpEAl_LK
creating /tmp/tmpEAl_LK/tmp/tmpEAl_LK/src
compile options: '-I/System/Library/Frameworks/Python.framework/
Versions/2.3/include/python2.3 -I/tmp/tmpEAl_LK/src -I/System/Library/
Frameworks/Python.framework/Versions/2.3/include/python2.3 -c'
gcc: /tmp/tmpEAl_LK/src/fortranobject.c
/tmp/tmpEAl_LK/src/fortranobject.c: In function `fortran_doc':
/tmp/tmpEAl_LK/src/fortranobject.c:123: warning: int format, long
unsigned int arg (arg 3)
gcc: /tmp/tmpEAl_LK/src/hellomodule.c
compiling Fortran sources
xlf(f77) options: '-qextname -O5'
xlf90(f90) options: '-qextname -O5'
xlf90(fix) options: '-qfixed -qextname -O5'
compile options: '-I/System/Library/Frameworks/Python.framework/
Versions/2.3/include/python2.3 -I/tmp/tmpEAl_LK/src -I/System/Library/
Frameworks/Python.framework/Versions/2.3/include/python2.3 -c'
xlf:f77: hello.f
** foo   === End of Compilation 1 ===
1501-510  Compilation successful for file hello.f.
xlf95 -Wl,-bundle,-flat_namespace,-undefined,suppress /tmp/tmpEAl_LK/
tmp/tmpEAl_LK/src/hellomodule.o /tmp/tmpEAl_LK/tmp/tmpEAl_LK/src/
fortranobject.o /tmp/tmpEAl_LK/hello.o -o ./hello.so
/usr/bin/ld: /usr/lib/gcrt1.o has external relocation entries in non-
writable section (__TEXT,__text) for symbols:
__mh_execute_header
/usr/bin/ld: /usr/lib/gcrt1.o has external relocation entries in non-
writable section (__TEXT,__text) for symbols:
__mh_execute_header
error: Command "xlf95 -Wl,-bundle,-flat_namespace,-
undefined,suppress /tmp/tmpEAl_LK/tmp/tmpEAl_LK/src/hellomodule.o /
tmp/tmpEAl_LK/tmp/tmpEAl_LK/src/fortranobject.o /tmp/tmpEAl_LK/
hello.o -o ./hello.so" failed with exit status 1
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/pythonmac-sig/attachments/20051205/2bf2c67d/attachment.html


More information about the Pythonmac-SIG mailing list