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
itwithout 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 -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] 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 list
[email protected]
https://lists.nongnu.org/mailman/listinfo/openexr-devel