openexr-devel
[Top][All Lists]
Advanced

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

Re: [Openexr-devel] .la and link to basename .so


From: Charles Flèche
Subject: Re: [Openexr-devel] .la and link to basename .so
Date: Tue, 10 Sep 2013 23:51:45 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130803 Thunderbird/17.0.8

Hi Piotr and Peter,


> We'd also be interested to see the problem you are having building with
> ./configure. I believe "make check" fails with certain versions of gcc
> on extended precision CPUs, but that shouldn't effect a standard
> "configure, make, make install" build.


Using the ./configure script from the official tarballs (ilmbase-2.0.1.tar.gz and pyilmbase-2.0.1.tar.gz) is fine. Problems start with the bootstrap from the Git repo.

Actually, even running ./bootstrap from the released tarballs before running ./configure makes the build fail.

To be a bit more precise, I can build IlmBase and PyIlmBase but PyIlmBase's iexmodule.so fails to link against libIex-2_0.so.10 at runtime __because it is not part of its dependencies__. ldd iexmodule.so has no libIex-2_0.so.10 line.

Here are the steps I follow to build the git master branch :

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=13.04
DISTRIB_CODENAME=raring
DISTRIB_DESCRIPTION="Ubuntu 13.04"

$ uname -a
Linux ws 3.8.0-30-generic #44-Ubuntu SMP Thu Aug 22 20:52:24 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

$ git clone https://github.com/openexr/openexr.git openexr-src-git

$ export LD_LIBRARY_PATH=/home/charles/src/openexr-install-git/lib
$ export PKG_CONFIG_PATH=/home/charles/src/openexr-install-git/lib/pkgconfig
$ export PYTHONPATH=/home/charles/src/openexr-install-git/lib/python2.7/site-packages

$ cd openexr-src-git/IlmBase
$ ls configure
ls: cannot access configure: No such file or directory

$ ./bootstrap
./bootstrap: 5: [: Linux: unexpected operator
running aclocal -I m4 ...
running libtoolize --automake --copy ...
running automake --add-missing --copy ...
configure.ac:11: installing `./config.guess'
configure.ac:11: installing `./config.sub'
configure.ac:14: installing `./install-sh'
configure.ac:14: installing `./missing'
Half/Makefile.am: installing `./depcomp'
running autoconf ...

Now type './configure' to configure IlmBase.

$ ./configure --prefix=/home/charles/src/openexr-install-git
[...]
Summary for IlmBase features:
enable large stack optimizations             yes

internal library namespaces                  Imath_2_0
                                             Iex_2_0
                                             IlmThread_2_0

public namespaces                            Imath Iex IlmThread

$ make -j5 && make install
[Success, everything is fine]

$ cd ../PyIlmBase

$ ls configure
ls: cannot access configure: No such file or directory

$ ./bootstrap
./bootstrap: 5: [: Linux: unexpected operator
running aclocal -I m4 ...
running libtoolize --automake --copy ...
running automake --add-missing --copy ...
configure.ac:4: installing `./config.guess'
configure.ac:4: installing `./config.sub'
configure.ac:7: installing `./install-sh'
configure.ac:7: installing `./missing'
PyIex/Makefile.am: installing `./depcomp'
running autoconf ...

Now type './configure' to configure PyIlmBase.

$ ./configure --prefix=/home/charles/src/openexr-install-git
[...]
Summary for PyIlmBase features:

Python version                                  2.7
boost::python libname                           boost_python

$ make -j5 && make install

$ python
Python 2.7.4 (default, Apr 19 2013, 18:28:01)
[GCC 4.7.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import iex
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: /home/charles/src/openexr-install-git/lib/python2.7/site-packages/iexmodule.so: undefined symbol: _ZNK7Iex_2_07BaseExc4whatEv

$ c++filt _ZNK7Iex_2_07BaseExc4whatEv
Iex_2_0::BaseExc::what() const


[In the next ldd commands I've stripped the paths for clarity]

$ ldd /home/charles/src/openexr-install-git/lib/libPyIex.so
        linux-vdso.so.1
        libpython2.7.so.1.0
        libstdc++.so.6
        libc.so.6
        libz.so.1
        libpthread.so.0
        libdl.so.2
        libutil.so.1
        libm.so.6
        /lib64/ld-linux-x86-64.so.2
        libgcc_s.so.1

$ ldd /home/charles/src/openexr-install-git/lib/python2.7/site-packages/iexmodule.so
        linux-vdso.so.1
        libPyIex.so.2
        libboost_python-py27.so.1.53.0
        libpython2.7.so.1.0
        libstdc++.so.6
        libc.so.6
        libgcc_s.so.1
        libpthread.so.0
        libz.so.1
        libdl.so.2
        libutil.so.1
        libm.so.6
        /lib64/ld-linux-x86-64.so.2


We see here that neither libPyIex.so nor iexmodule.so link against libIex.so, hence the missing symbol. If I build the tarballs with ./configure, I see that libPyIex.so should link against libIex-2_0.so.10

Something seems odd with the ./bootstrap script.

I've contacted Nicholas Yue (the original author of the CMakeLists.txt files) to get some help and he kindly confirmed that he experiences problems building the git master branch on OSX too.

I've sent him the logs of both make command. I attach them again to this message.


Attachment: make-ilmbase.log
Description: Text document

Attachment: make-pyilmbase.log
Description: Text document


reply via email to

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