I'm trying to "make everything" based on the AAF-src-1.1.6.tar.gz distribution on an Ubuntu 11.10 system.
Unfortunately I'm running into some link errors when the examples shall be build:
The dlopen/dlerror etc. symbols are present in the dynamic linker loader library (dl). That library is provided to g++ at the start of the line: 'g++ -ldl …'. In your case (version of g++) the '-ldl' needs to be after the '-laaflib' to allow g++ to find the symbols required from aaflib.
A quick hack (a proper fix would require more investigation by the maintainers) is to add this line at the end of AAF/build/pdefs-i586Linux.mk file:
PLATFORMLIBS = -ldl
Philip
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
thanks a lot for the hack. It works :-)
For anyone else trying to build on Ubuntu - I also had to install and refer libuuid as follows:
sudo apt-get install uuid-dev
export UUIDLIB=/usr/lib/x86_64-linux-gnu/libuuid.so
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thanks for the info both of you. This also resolved the same issue on Ubuntu 13.04. I already had the uuid files loaded but it wasn't looking in /usr/lib/x86_64-linux-gnu so like the previous post I added it the path and this did work.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I'm trying to "make everything" based on the AAF-src-1.1.6.tar.gz distribution on an Ubuntu 11.10 system.
Unfortunately I'm running into some link errors when the examples shall be build:
…
make: Entering directory `/root/aaf/AAF/examples/com-api/ComCutsOnlyTest'
Generating dependencies for CutsOnlyExample.cpp
make: Leaving directory `/root/aaf/AAF/examples/com-api/ComCutsOnlyTest'
make: Entering directory `/root/aaf/AAF/examples/com-api/ComCutsOnlyTest'
g++ -c -g -Wall -Wundef -Wno-non-virtual-dtor -Werror -Wno-reorder -Wno-unused -D_DEBUG -DOM_DEBUG -DOM_STACK_TRACE_ON_ASSERT -fsigned-char -DOM_USE_SCHEMASOFT_SS -DOM_STRUCTURED_STORAGE -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_XOPEN_SOURCE=500 -fPIC -I../../../AAFx86_64LinuxSDK/g++/include CutsOnlyExample.cpp -o ../../../AAFx86_64LinuxSDK/g++/Examples/debug/CutsOnlyExample.o
g++ -ldl -rdynamic ../../../AAFx86_64LinuxSDK/g++/Examples/debug/CutsOnlyExample.o -L../../../AAFx86_64LinuxSDK/g++/lib/debug -laaflib -laafiid -Xlinker -rpath -Xlinker ../../../AAFx86_64LinuxSDK/g++/bin/debug -o ../../../AAFx86_64LinuxSDK/g++/bin/debug/ComCutsTestAAF
../../../AAFx86_64LinuxSDK/g++/lib/debug/libaaflib.a(aaflibsgi.o): In function `AAFLoadLibrary':
/root/aaf/AAF/ref-impl/aaflib/aaflibsgi.cpp:95: undefined reference to `dlopen'
/root/aaf/AAF/ref-impl/aaflib/aaflibsgi.cpp:99: undefined reference to `dlerror'
../../../AAFx86_64LinuxSDK/g++/lib/debug/libaaflib.a(aaflibsgi.o): In function `AAFFindSymbol':
/root/aaf/AAF/ref-impl/aaflib/aaflibsgi.cpp:130: undefined reference to `dlsym'
collect2: ld returned 1 exit status
make: *** Error 1
make: Leaving directory `/root/aaf/AAF/examples/com-api/ComCutsOnlyTest'
make: *** Error 2
make: Leaving directory `/root/aaf/AAF/examples/com-api'
make: *** Error 2
make: Leaving directory `/root/aaf/AAF/examples'
make: *** Error 2
Any idea what lib is missing here?
The dlopen/dlerror etc. symbols are present in the dynamic linker loader library (dl). That library is provided to g++ at the start of the line: 'g++ -ldl …'. In your case (version of g++) the '-ldl' needs to be after the '-laaflib' to allow g++ to find the symbols required from aaflib.
A quick hack (a proper fix would require more investigation by the maintainers) is to add this line at the end of AAF/build/pdefs-i586Linux.mk file:
PLATFORMLIBS = -ldl
Philip
Hi Philip,
thanks a lot for the hack. It works :-)
For anyone else trying to build on Ubuntu - I also had to install and refer libuuid as follows:
sudo apt-get install uuid-dev
export UUIDLIB=/usr/lib/x86_64-linux-gnu/libuuid.so
Thanks for the info both of you. This also resolved the same issue on Ubuntu 13.04. I already had the uuid files loaded but it wasn't looking in /usr/lib/x86_64-linux-gnu so like the previous post I added it the path and this did work.