relocation R_X86_64_32 against `a local symbol' can not be used...
Hi! I am trying to install pyswisseph (http://pypi.python.org/pypi/pyswisseph) extension on my x86_64 system, but building of extension fails with: [gour@nitai pyswisseph-1.74.00-0] python setup.py --verbose build rm -f *.o swetest libswe* gcc -c -g -O9 -Wall -pedantic swedate.c In file included from swephexp.h:80, from swedate.c:86: sweodef.h:201: warning: ISO C90 does not support ‘long long’ gcc -c -g -O9 -Wall -pedantic swehouse.c In file included from swehouse.c:62: sweodef.h:201: warning: ISO C90 does not support ‘long long’ gcc -c -g -O9 -Wall -pedantic swejpl.c In file included from swephexp.h:80, from swejpl.c:71: sweodef.h:201: warning: ISO C90 does not support ‘long long’ gcc -c -g -O9 -Wall -pedantic swemmoon.c In file included from swephexp.h:80, from swemmoon.c:182: sweodef.h:201: warning: ISO C90 does not support ‘long long’ gcc -c -g -O9 -Wall -pedantic swemplan.c In file included from swephexp.h:80, from swemplan.c:63: sweodef.h:201: warning: ISO C90 does not support ‘long long’ gcc -c -g -O9 -Wall -pedantic swepcalc.c In file included from swephexp.h:80, from swepcalc.h:75, from swepcalc.c:76: sweodef.h:201: warning: ISO C90 does not support ‘long long’ swepcalc.c: In function ‘calcserv’: swepcalc.c:169: warning: ‘rspeed’ may be used uninitialized in this function swepcalc.c: In function ‘nacalc’: swepcalc.c:134: warning: ‘rspeed’ may be used uninitialized in this function gcc -c -g -O9 -Wall -pedantic sweph.c In file included from swejpl.h:68, from sweph.c:66: sweodef.h:201: warning: ISO C90 does not support ‘long long’ sweph.c: In function ‘app_pos_etc_plan’: sweph.c:2143: warning: array subscript is above array bounds gcc -c -g -O9 -Wall -pedantic swepdate.c In file included from swephexp.h:80, from swepcalc.h:75, from swepdate.c:77: sweodef.h:201: warning: ISO C90 does not support ‘long long’ gcc -c -g -O9 -Wall -pedantic swephlib.c In file included from swephexp.h:80, from swephlib.c:79: sweodef.h:201: warning: ISO C90 does not support ‘long long’ gcc -c -g -O9 -Wall -pedantic swecl.c In file included from swejpl.h:68, from swecl.c:62: sweodef.h:201: warning: ISO C90 does not support ‘long long’ swecl.c: In function ‘swe_lun_occult_when_glob’: swecl.c:1093: warning: ‘tjd’ may be used uninitialized in this function ar r libswe.a swedate.o swehouse.o swejpl.o swemmoon.o swemplan.o swepcalc.o \ sweph.o swepdate.o swephlib.o swecl.o ar: creating libswe.a running build running build_ext building 'swisseph' extension skipping pyswisseph.c (build/temp.linux-x86_64-2.5/pyswisseph.o up-to-date) skipping swhdatetime.c (build/temp.linux-x86_64-2.5/swhdatetime.o up-to-date) skipping swhfmt.c (build/temp.linux-x86_64-2.5/swhfmt.o up-to-date) skipping swhsearch.c (build/temp.linux-x86_64-2.5/swhsearch.o up-to-date) gcc -pthread -shared build/temp.linux-x86_64-2.5/pyswisseph.o \ build/temp.linux-x86_64-2.5/swhdatetime.o build/temp.linux-x86_64-2.5/swhfmt.o \ build/temp.linux-x86_64-2.5/swhsearch.o -Lsrc -L/usr/lib -lswe -lpython2.5 \ -o build/lib.linux-x86_64-2.5/swisseph.so /usr/bin/ld: src/libswe.a(swedate.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC src/libswe.a: could not read symbols: Bad value collect2: ld returned 1 exit status error: command 'gcc' failed with exit status 1 Here is the setup.py: [gour@nitai pyswisseph-1.74.00-0] cat setup.py #!/usr/bin/env python # -*- coding: utf8 -*- import os.path, sys From distutils.core import setup, Extension VERSION = '1.74.00-0' if 'build' in sys.argv or 'install' in sys.argv: instdir = os.path.dirname(os.path.abspath(__file__)) os.chdir(os.path.join(instdir, 'src')) os.system('make clean') os.system('make libswe.a') os.chdir(instdir) swemodule = Extension( 'swisseph', include_dirs = ['src'], libraries = ['swe'], library_dirs = ['src'], sources = ['pyswisseph.c', 'swhdatetime.c', 'swhfmt.c', 'swhsearch.c'] ) setup( name = 'pyswisseph', version = VERSION, description='Python extension to the Swiss Ephemeris', long_description="""Python extension to AstroDienst's Swiss Ephemeris library. Swiss Ephemeris homepage: http://www.astro.com/swisseph Now Python 3 compatible (experimental). Usage example:
import swisseph as swe swe.set_ephe_path('/usr/share/ephe') # set path to ephemeris files now = swe.julday(2007,3,3) # get Julian day number res = swe.lun_eclipse_when(now) # find next lunar eclipse (from now on) ecltime = swe.revjul(res[1][0]) # get date UTC ecltime (2007, 3, 3, 23.347975596785545) jd = swe.julday(2008,3,21) swe.calc_ut(jd, swe.AST_OFFSET+13681)[0] # asteroid Monty Python 0.098474291148756998 help(swe)
Installation via: # python setup.py install """, author='S.Marquis', author_email='stnsls@gmail.com', url='http://pyswisseph.atarax.org', download_url='http://pypi.python.org/pypi/pyswisseph', classifiers=[ 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', 'Intended Audience :: Religion', 'License :: OSI Approved :: GNU General Public License (GPL)', 'Programming Language :: C', 'Programming Language :: Python', 'Topic :: Religion', 'Topic :: Scientific/Engineering :: Astronomy', 'Topic :: Software Development :: Libraries :: Python Modules' ], keywords='Astrology Ephemeris Swisseph', ext_modules = [swemodule] ) # End. I'm quite new (just started learning Python) with Python and its tools, but, afaik, "recompile with -fPIC" means that something is missing so that extension is not compiled properly. I use: [gour@nitai pyswisseph-1.74.00-0] gcc -v Using built-in specs. Target: x86_64-unknown-linux-gnu Configured with: ../configure --prefix=/usr --enable-shared \ --enable-languages=c,c++,fortran,objc,obj-c++,treelang \ --enable-threads=posix --mandir=/usr/share/man --enable-__cxa_atexit \ --disable-multilib --libdir=/usr/lib --libexecdir=/usr/lib \ --enable-clocale=gnu --disable-libstdcxx-pch --with-tune=generic Thread model: posix gcc version 4.3.1 20080724 (prerelease) (GCC) on: [gour@nitai pyswisseph-1.74.00-0] uname -a Linux nitai 2.6.25-ARCH #1 SMP PREEMPT Mon Jul 14 14:56:27 UTC 2008 \ x86_64 AMD Turion(tm) 64 Mobile ML-34 AuthenticAMD GNU/Linux Any idea? Sincerely, Gour -- Gour | Zagreb, Croatia | GPG key: C6E7162D ----------------------------------------------------------------
"Gour" == Gour <gour@mail.inet.hr> writes:
Excuse me for the noise. Gour> I'm quite new (just started learning Python) with Python and its Gour> tools, but, afaik, "recompile with -fPIC" means that something is Gour> missing so that extension is not compiled properly. I forgot that pyswisseph package builds libswe.a via Makefile and I modified it to use autoconf which properly handles -fPIC which I added in Makefile and now everything is OK. Sincerely, Gour -- Gour | Zagreb, Croatia | GPG key: C6E7162D ----------------------------------------------------------------
participants (1)
-
Gour