You might also need to move all of the Python.h and boost/python.hpp
includes to the top of your header/cpp files.

At least, that's what I had to do to get it properly build on Ubuntu 12.04
a while back ...

On Sun, Dec 10, 2017 at 4:05 PM, Richard Addison-Wood <rich...@wetafx.co.nz>
wrote:

> For what it is worth, I would suggest linking against boost_python as a
> shared library rather than as a static library.
>
>
> On 11/12/17 11:05, Peter Hillman wrote:
>
> Hi Pierrot,
>
> I think this is the error message which is causing the failure:
>
> libboost_python.a(dict.o): relocation R_X86_64_32 against `.rodata.str1.1'
> can not be used when making a shared object; recompile with -fPIC
>
> This means that boost::python was compiled as a static library without
> using PIC (position independent code) which is required for shared objects
> such as python extensions.
>
> I'm not entirely sure what the thing to do is, as I'm not a boost expert.
> I'm hoping someone might chime in with advice about the best practice. I
> expect either compiling boost::python as a shared library would fix the
> problem (making .so files instead of .a files), as would specifying
> cxxflags='-fPIC' as an option when compiling boost as a static library.
>
> Regarding the other questions:
>
> You also spoke about installing into the same folder of ilmbase-2-2-0.
> What would you change regarding my about steps? To be honst with you, last
> week I tried but I do not rember why, I finally soecified a folder
> dedicated for pyilmbase2-2-0 in /opt/
>
> I advised installing all the libraries into the same directory to simplify
> both the build process and usage. However, that won't solve the build issue
> you currently have. Once you have pyilmbase built and installed, you may
> have to specify multiple paths in PTYHONPATH and/or LD_LIBRARY_PATH before
> running python code that uses the pyilmbase extensions, otherwise you will
> see errors about not being able to find the boost and/or ilmbase libraries.
>
> Cheers,
>
> Peter
>
> I also observed a file name install-sh. How can that file can be usefull
> for the installation?
>
> install-sh is used internally when you do a 'make install' - you won't
> need to run that yourself.
>
>
>
>
> On 07/12/17 23:18, Forum (io) wrote:
>
> Dear Peter and all community member
>
> Thank a lot for your reply.
>
> Today, I have to spend time on my issues that I still can not solved. To
> be honnestly, I can not remember, why I could not install pyilmbase2-2- on
> the same folder of ilam...
>
> However, your last e-mail has some important information that I need to
> solve first.
>
> To resume, I download ilam2.2.0 into a "downlaod" folder and I untar it, I
> cd into pyilmbase-2-2-0 in order to compile. First I simply run that command
>
> *$ ./compile --prefix=/opt/pyilmbase2-2-0*
>
> I also "accidently" run this command
>
> *$ ./compile --prefix=/opt/ilmbase2-2-0*
>
> Both display this message
>
>
>
>
>
>
>
>
>
>
>
>
> *checking for boost::python... no *** Could not run the boost::python test
> program, checking why... *** The test program could not be compiled.  Is
> boost::python installed? *** Check that the cflags (below) includes the
> boost::python include directory *** *** Flags used by the test: ***
> cflags: -g -O2  -I/usr/include/python2.7 -g -O2  -I/usr/include/python2.7
> ***     ldflags:  -L/opt/ilmbase-2-2-0/lib    -L/usr/lib64
> -L/opt/ilmbase-2-2-0/lib    -L/usr/lib64 *** *** You can also run configure
> with --disable-boostpythontest to skip this test. configure: error: Could
> not compile boost::python test program. *
>
> You mentioned to check if boost has been installed*. *Yes, I did it
> without issues. I installed boost 1.65.1 into /opt/boost_1.65.1
> You also mentionned to try this following command, which indicated where
> is boost installation
>
> *$ ./configure --prefix=/opt/pyilmbase-2-2-0
> --with-boost-include-dir=/opt/boost_1.65.1/include
> --with-boost-lib-dir=/opt/boost_1.65.1/lib*
>
> which look now really better, as *I do not* have the error message,
> starting with
>
>
>
> *checking for boost::python... no *** Could not run the boost::python test
> program, checking why... *** The test program could not be compiled.  Is
> boost::python installed?*
>
> As I can not find tutorial or example of pyilmbase installation, I run the
> following command from pyilmbase2-2-0 untar-ed folder, just after the
> ./compile command
>
> # make
>
> which shown me errors :o(
>
> *Before shwoing the error*, note that into the /etc/bashrc file, I save
> the following line
>
> *export PATH=/opt/lua53/bin:$PATH*
>
> *#export LD_LIBRARY_PATH=/opt/lua53/lib:$LD_LIBRARY_PATH*
> *export LD_LIBRARY_PATH=/opt/lua53/lib:/opt/ilmbase-2-2-0/lib*
>
> *export LUA_INCLUDE_DIR=/opt/lua53/include*
> *export LUA_LIBRARIES=/opt/lua53/lib*
>
> *export PKG_CONFIG_PATH=/opt/ilmbase-2-2-0/lib/pkgconfig*
>
>
> Nothing is about boost. Is it important?
>
> Here is the error message generated by *make* from pyilmbase-2-2-0 folder:
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *[root@pc6 pyilmbase-2.2.0]# make Making all in config make[1]: Entering
> directory `/root/install-package/OpenEXR/pyilmbase-2.2.0/config' make
> all-am make[2]: Entering directory
> `/root/install-package/OpenEXR/pyilmbase-2.2.0/config' make[2]: Leaving
> directory `/root/install-package/OpenEXR/pyilmbase-2.2.0/config' make[1]:
> Leaving directory `/root/install-package/OpenEXR/pyilmbase-2.2.0/config'
> Making all in PyIex make[1]: Entering directory
> `/root/install-package/OpenEXR/pyilmbase-2.2.0/PyIex' /bin/sh ../libtool
> --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I. -I../config -pthread
> -I/opt/ilmbase-2-2-0/include/OpenEXR -I.. -I../config   -pipe -g -O2
> -I/opt/boost_1.65.1/include -I/usr/include/python2.7 -MT PyIex.lo -MD -MP
> -MF .deps/PyIex.Tpo -c -o PyIex.lo PyIex.cpp libtool: compile:  g++
> -DHAVE_CONFIG_H -I. -I../config -pthread
> -I/opt/ilmbase-2-2-0/include/OpenEXR -I.. -I../config -pipe -g -O2
> -I/opt/boost_1.65.1/include -I/usr/include/python2.7 -MT PyIex.lo -MD -MP
> -MF .deps/PyIex.Tpo -c PyIex.cpp  -fPIC -DPIC -o .libs/PyIex.o In file
> included from /usr/include/python2.7/pyconfig.h:6:0,                  from
> /usr/include/python2.7/Python.h:8,                  from ./PyIex.h:45,
>                  from PyIex.cpp:42:
> /usr/include/python2.7/pyconfig-64.h:1188:0: warning: "_POSIX_C_SOURCE"
> redefined [enabled by default]  #define _POSIX_C_SOURCE 200112L  ^ In file
> included from
> /usr/include/c++/4.8.2/x86_64-redhat-linux/bits/os_defines.h:39:0,
>                  from
> /usr/include/c++/4.8.2/x86_64-redhat-linux/bits/c++config.h:2097,
>                  from /usr/include/c++/4.8.2/iosfwd:38,
> from /usr/include/c++/4.8.2/ios:38,                  from
> /usr/include/c++/4.8.2/istream:38,                  from
> /usr/include/c++/4.8.2/sstream:38,                  from ./PyIex.h:44,
>                  from PyIex.cpp:42: /usr/include/features.h:168:0: note:
> this is the location of the previous definition  # define _POSIX_C_SOURCE
> 200809L  ^ In file included from /usr/include/python2.7/pyconfig.h:6:0,
>                  from /usr/include/python2.7/Python.h:8,
> from ./PyIex.h:45,                  from PyIex.cpp:42:
> /usr/include/python2.7/pyconfig-64.h:1210:0: warning: "_XOPEN_SOURCE"
> redefined [enabled by default]  #define _XOPEN_SOURCE 600  ^ In file
> included from
> /usr/include/c++/4.8.2/x86_64-redhat-linux/bits/os_defines.h:39:0,
>                  from
> /usr/include/c++/4.8.2/x86_64-redhat-linux/bits/c++config.h:2097,
>                  from /usr/include/c++/4.8.2/iosfwd:38,
> from /usr/include/c++/4.8.2/ios:38,                  from
> /usr/include/c++/4.8.2/istream:38,                  from
> /usr/include/c++/4.8.2/sstream:38,                  from ./PyIex.h:44,
>                  from PyIex.cpp:42: /usr/include/features.h:170:0: note:
> this is the location of the previous definition  # define _XOPEN_SOURCE 700
>  ^ mv -f .deps/PyIex.Tpo .deps/PyIex.Plo /bin/sh ../libtool --tag=CXX
> --mode=link g++ -pipe -g -O2 -I/opt/boost_1.65.1/include
> -I/usr/include/python2.7 -version-info 2:2:0 -no-undefined
> -L/opt/ilmbase-2-2-0/lib   -L/opt/boost_1.65.1/lib -L/usr/lib64 -o
> libPyIex.la -rpath /opt/pyilmbase-2-2-0/lib PyIex.lo -lz -pthread
> -L/opt/ilmbase-2-2-0/lib -lImath -lHalf -lIex -lIexMath -lIlmThread
> -lboost_python -lpython2.7 libtool: link: g++ -shared -nostdlib
> /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/crti.o
> /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtbeginS.o  .libs/PyIex.o
> -Wl,-rpath -Wl,/opt/ilmbase-2-2-0/lib -Wl,-rpath -Wl,/opt/ilmbase-2-2-0/lib
> -L/opt/ilmbase-2-2-0/lib -L/opt/boost_1.65.1/lib -L/usr/lib64 -lz
> /opt/ilmbase-2-2-0/lib/libImath.so /opt/ilmbase-2-2-0/lib/libHalf.so
> /opt/ilmbase-2-2-0/lib/libIexMath.so /opt/ilmbase-2-2-0/lib/libIlmThread.so
> /opt/ilmbase-2-2-0/lib/libIex.so -lboost_python -lpython2.7
> -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5
> -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64
> -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../..
> -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtendS.o
> /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/crtn.o  -pthread
> -pthread -Wl,-soname -Wl,libPyIex.so.2 -o .libs/libPyIex.so.2.0.2 libtool:
> link: (cd ".libs" && rm -f "libPyIex.so.2" && ln -s "libPyIex.so.2.0.2"
> "libPyIex.so.2") libtool: link: (cd ".libs" && rm -f "libPyIex.so" && ln -s
> "libPyIex.so.2.0.2" "libPyIex.so") libtool: link: ( cd ".libs" && rm -f
> "libPyIex.la" && ln -s "../libPyIex.la" "libPyIex.la" ) /bin/sh ../libtool
> --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I. -I../config -pthread
> -I/opt/ilmbase-2-2-0/include/OpenEXR -I.. -I../config   -pipe -g -O2
> -I/opt/boost_1.65.1/include -I/usr/include/python2.7 -MT iexmodule.lo -MD
> -MP -MF .deps/iexmodule.Tpo -c -o iexmodule.lo iexmodule.cpp libtool:
> compile:  g++ -DHAVE_CONFIG_H -I. -I../config -pthread
> -I/opt/ilmbase-2-2-0/include/OpenEXR -I.. -I../config -pipe -g -O2
> -I/opt/boost_1.65.1/include -I/usr/include/python2.7 -MT iexmodule.lo -MD
> -MP -MF .deps/iexmodule.Tpo -c iexmodule.cpp  -fPIC -DPIC -o
> .libs/iexmodule.o mv -f .deps/iexmodule.Tpo .deps/iexmodule.Plo /bin/sh
> ../libtool --tag=CXX   --mode=link g++ -pipe -g -O2
> -I/opt/boost_1.65.1/include -I/usr/include/python2.7 -avoid-version -module
> -L/opt/ilmbase-2-2-0/lib   -L/opt/boost_1.65.1/lib -L/usr/lib64 -o
> iexmodule.la <http://iexmodule.la> -rpath
> /opt/pyilmbase-2-2-0/lib64/python2.7/site-packages iexmodule.lo libPyIex.la
> -lboost_python -lpython2.7 libtool: link: g++ -shared -nostdlib
> /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/crti.o
> /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtbeginS.o  .libs/iexmodule.o
> -Wl,-rpath -Wl,/root/install-package/OpenEXR/pyilmbase-2.2.0/PyIex/.libs
> -Wl,-rpath -Wl,/opt/ilmbase-2-2-0/lib -Wl,-rpath
> -Wl,/opt/pyilmbase-2-2-0/lib -Wl,-rpath -Wl,/opt/ilmbase-2-2-0/lib
> -L/opt/ilmbase-2-2-0/lib -L/opt/boost_1.65.1/lib -L/usr/lib64
> ./.libs/libPyIex.so -lz /opt/ilmbase-2-2-0/lib/libImath.so
> /opt/ilmbase-2-2-0/lib/libHalf.so /opt/ilmbase-2-2-0/lib/libIexMath.so
> /opt/ilmbase-2-2-0/lib/libIlmThread.so /opt/ilmbase-2-2-0/lib/libIex.so
> -lboost_python -lpython2.7 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5
> -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64
> -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../..
> -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtendS.o
> /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/crtn.o    -pthread
> -Wl,-soname -Wl,iexmodule.so -o .libs/iexmodule.so /usr/bin/ld:
> /opt/boost_1.65.1/lib/libboost_python.a(dict.o): relocation R_X86_64_32
> against `.rodata.str1.1' can not be used when making a shared object;
> recompile with -fPIC /opt/boost_1.65.1/lib/libboost_python.a: error adding
> symbols: Bad value collect2: error: ld returned 1 exit status make[1]: ***
> [iexmodule.la <http://iexmodule.la>] Error 1 make[1]: Leaving directory
> `/root/install-package/OpenEXR/pyilmbase-2.2.0/PyIex' make: ***
> [all-recursive] Error 1 [root@pc6 pyilmbase-2.2.0]# *
>
>
> I wonder, if there is an official procedure to install pyilmbase-2.2.0
>
> *I also observed a file name** install-sh. How can that file can be
> usefull for the installation?*
>
> You also spoke about installing into the same folder of ilmbase-2-2-0.
> What would you change regarding my about steps? To be honst with you, last
> week I tried but I do not rember why, I finally soecified a folder
> dedicated for pyilmbase2-2-0 in /opt/
>
>
> Many many thank for your help and help from openexr community.
>
> Cheers
> Pierrot
>
>
> On 12/1/17 1:21 AM, Peter Hillman wrote:
>
> ./configure --prefix=/opt/ilmbase-2-2-0 
> --with-boost-include-dir=/opt/boost/include
> --with-boost-lib-dir=/opt/boost/lib
>
>
>
>
>
> _______________________________________________
> Openexr-devel mailing 
> listOpenexr-devel@nongnu.orghttps://lists.nongnu.org/mailman/listinfo/openexr-devel
>
>
>
> _______________________________________________
> Openexr-devel mailing list
> Openexr-devel@nongnu.org
> https://lists.nongnu.org/mailman/listinfo/openexr-devel
>
>
_______________________________________________
Openexr-devel mailing list
Openexr-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/openexr-devel

Reply via email to