openexr-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Openexr-devel] Pain to install pyilmabase


From: Forum (io)
Subject: Re: [Openexr-devel] Pain to install pyilmabase
Date: Tue, 12 Dec 2017 15:16:22 +0100
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Thunderbird/52.5.0

Hello,

Thank a lot for your reply.
I am bit lost :o).

The first think, I should look at, is to share boost. I should look around the parameter -fPIC.
Also, Richard sugest to make a link Rather that a static library.

What would be the different that making a link, than sharing boost with the option -fPIC??

I downloaded and installed from this page
https://gist.github.com/1duo/2d1d851f76f8297be264b52c1f31a2ab

Then I un-tared and I "compiled" with this command:
sudo ./bootstrap.sh --prefix=/opt/boost_1.65.1

Then I looked how to include the option -fPIC. I edited bootstrap and I found nothing about fPIC or cxxflags.

Could you suggest me the correct syntax of the command to share boost?

@Richard
What do you exactely mean by creating a "linking again boost_python".?
Should I export something into /etc/bashrc as I did for ilbase?
export PKG_CONFIG_PATH=/opt/ilmbase-2-2-0/lib/pkgconfig


I thank you for your help and support and you could give me some syntax ot exemple would be really appreciate.

Cheers
Pierre


On 12/11/17 1:05 AM, Richard Addison-Wood 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:


address@hidden 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
address@hidden 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
address@hidden
https://lists.nongnu.org/mailman/listinfo/openexr-devel



_______________________________________________
Openexr-devel mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/openexr-devel


reply via email to

[Prev in Thread] Current Thread [Next in Thread]