[C++-SIG] Re: Using SWIG for C++ to Python - ld problem

Stuart I Reynolds S.I.Reynolds at cs.bham.ac.uk
Wed Sep 30 12:41:34 CEST 1998


Nathan Sullivan wrote:
> 
> Stuart I Reynolds <S.I.Reynolds at cs.bham.ac.uk> writes:
> 
> > Everthing seems to work fine up until...
> >
> > % ld -shared *.o libgcc.a libg++.a libstc++.a -o mc.so
> > ld: fatal: option -h and building a dynamic executable are incompatible
> > ld: fatal: Flags processing errors
> >
> > ...which I seem to get whatever I do whenever I include any of my new .o
> > files.
> >
> > As you can probably tell, I'm using g++ (2.8) under Solaris.
> 
> Check your $PATH.  You're running either /usr/ucb/ld or
> /usr/ccs/bin/ld, neither of which support the -shared option.  That's
> apparently a GNU ld exclusive.  If you don't have GNU ld, you'll
> either need to get it or figure out the proper options to
> /usr/ccs/bin/ld.
> 
> OK, you don't have to figure out the proper options to
> /usr/ccs/bin/ld, because I just did. :)  The -G option tells the
> linker to create a shared object.  So, replace -shared with -G, and it
> should work.
> 

Aha. That works... thank a lot. (I should've read the manual - doh! Or
g++ should've complained!!).

Almost there. Now I'm using:

% swig -python -shadow -stat -c++ mc.i

% g++ -shared -c *.cpp *.cc *.c \
   -I /bham/ums/common/pd/packages/Python/include/python1.5/ \
   -I/bham/ums/solaris/pd/packages/Python/include/python1.5/

% ld -G -o MCcmodule.so \
  /bham/pd/packages/gcc-2.8.0/lib/libg++.a \
 
/bham/pd/packages/gcc-2.8.0/lib/gcc-lib/sparc-sun-solaris2.6/2.8.0/libgcc.a
\
  *.o

Which seems to work without errors. Now running Python I get:

>>> import MC
Traceback (innermost last):
  File "<stdin>", line 1, in ?
  File "MC.py", line 2, in ?
    import MCc
ImportError: ld.so.1: python: fatal: relocation error: file
./MCcmodule.so: symbol __builtin_new: referenced symbol not found.

I take it "__builtin_new" is in one of the C++ libraries. I've include
the c++ libraries libg++.a and libgcc.a because that's what the SWIG
manual says. However, we don't seem to have libstc++.a on our system.
What's in it / is it the problem?

Ideas??

Stuart

SWIG Python page
http://www.swig.org/Doc1.1/Python.html#n4




More information about the Cplusplus-sig mailing list