Reputation: 51
Hello I am having problem linking my .so file t Python on Linux systems. (I got this working just fine on MacOS X and Windows but am stuck on this)
Currently the link flags are as follows:
LIBS = -L/usr/local/lib/python2.7/config -lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic -L$(GTKLIBPREFIX) -L/usr/X11R6/lib -lgtk-x11-2.0 -lgdk-x11-2.0 -rdynamic -lgmodule-2.0 -lglib-2.0 -ldl -lXi -lXext -lX11 -lm
And the compile flag is set to:
PYTHON = /usr/local/include/python2.7 -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
Using the so file I build will result in unresolved symbols.
Then I thought doing ldd on the build so file since I would think I should see python here ??
What I got is this:
linux-gate.so.1 => (0xffffe000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7f3f000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7f3b000)
libutil.so.1 => /lib/tls/i686/cmov/libutil.so.1 (0xb7f36000)
libgtk-x11-2.0.so.0 => /usr/lib/libgtk-x11-2.0.so.0 (0xb7be6000)
libgdk-x11-2.0.so.0 => /usr/lib/libgdk-x11-2.0.so.0 (0xb7b62000)
libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0xb7b5e000)
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb7acc000)
libXi.so.6 => /usr/lib/libXi.so.6 (0xb7ac4000)
libXext.so.6 => /usr/lib/libXext.so.6 (0xb7ab7000)
libX11.so.6 => /usr/lib/libX11.so.6 (0xb79ed000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb79c7000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb78e8000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb78dd000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb77a9000)
/lib/ld-linux.so.2 (0x80000000)
libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0 (0xb7793000)
libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0xb778a000)
libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0xb7750000)
libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0xb7736000)
libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0xb76fc000)
libcairo.so.2 => /usr/lib/libcairo.so.2 (0xb769a000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0xb766b000)
libXrender.so.1 => /usr/lib/libXrender.so.1 (0xb7662000)
libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0xb765f000)
libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0xb765c000)
libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0xb7653000)
libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0xb764e000)
librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb7644000)
libXau.so.6 => /usr/lib/libXau.so.6 (0xb7641000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb763c000)
libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0xb7611000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0xb75a7000)
libz.so.1 => /usr/lib/libz.so.1 (0xb7593000)
libpng12.so.0 => /usr/lib/libpng12.so.0 (0xb756e000)
libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb7550000)
With no hint of Python.
Linker flags were found by doing:
/usr/local/lib/python2.7/config$ python2.7-config --ldflags
Does anyone know what I am doing wrong here ? (note Linux make files is really not strong side for me)
Upvotes: 4
Views: 228
Reputation: 888
Consider adding to the link flags: -Wl,-R/home/me/mylibdir See also LD_RUN_PATH
Upvotes: 1