Archivos de Tags: 10.10 @es

Instalar la librería collada-dom en Ubuntu 10.04, 10.11, 11.04, 11.10 y 12.04

Quería instalar collada-dom para añadir el soporte de ficheros DAE a OpenSceneGraph. Para instalarlo usé el código del repositorio SVN a fecha 2011/03/12 (simplemente porque ya lo tenía descargado de hace tiempo y sabía que funcionaba). Se puede descargar la versión de ese mismo día con el siguiente comando:

svn co -r {20110312} https://collada-dom.svn.sourceforge.net/svnroot/collada-dom/trunk collada-dom

La última versión del trunk SVN falla al compilar los projectos rt y fx e incluso no funciona con OpenSceneGraph (al parecer unos tipos de datos han desaparecido de Collada DOM y el plugin para ficheros DAE de OpenSceneGraph aún los usa). De todas maneras si quieres intentarlo esta es la manera de bajarse la última versión:

svn co https://collada-dom.svn.sourceforge.net/svnroot/collada-dom/trunk collada-dom

Instalar estas dependencias para Ubuntu 10.04:

sudo apt-get install libboost1.40-dev libpcre++-dev nvidia-cg-toolkit libboost-filesystem1.40-dev libglut3-dev

Para Ubuntu 10.10 y 11.04 instalar estas:

sudo apt-get install libboost1.42-dev libpcre++-dev nvidia-cg-toolkit libboost-filesystem1.42-dev libglut3-dev

Para Ubuntu 11.10 y 12.04 instalar estas:

sudo apt-get install libboost1.46-dev libpcre++-dev nvidia-cg-toolkit libboost-filesystem1.46-dev freeglut3-dev

Para compilar ejecutar, dentro de la carpeta de collada-dom, lo siguiente:

make os=linux project=minizip -C dom
make os=linux project=dom -C dom
make os=linux project=rt -C rt
make os=linux project=fx -C fx

Ahora ya podemos simplemente copiar las librerías y los ficheros de cabecera a “/usr/local/lib” y “/usr/local/include“:

sudo cp dom/build/linux-1.4/libminizip.* /usr/local/lib/
sudo cp dom/build/linux-1.4/libcollada14dom.* /usr/local/lib/
sudo cp -R dom/include /usr/local/include/colladadom
sudo cp rt/build/linux-1.4/libcollada14rt.* /usr/local/lib/
sudo cp fx/build/linux-1.4/libcollada14fx.* /usr/local/lib/

ACTUALIZACIÓN: Solucionados los problemas de compilación e instalación para saltarnos el error con domTest y viewer. También he quitado los proyectos rt y fx porque no son necesarios. Ignorar el resto del post.

Pero como la librería Boost que se usa en Ubuntu 12.04 ha sufrido unos cambios hay que cambiar un poco el código de collada-dom para que funcione: la función native_file_string() ha sido eliminada de Boost así que tenemos que cambiar el fichero “dom/test/1.4/domTest.cpp” en las líneas 91 y 95 para llamar a la función c_str() en vez de a native_file_string(). Es decir, cambiar esto:

string lookupTestFile(const string& fileName) {
	return (dataPath() / fileName).native_file_string();
}

string getTmpFile(const string& fileName) {
	return (tmpPath() / fileName).native_file_string();
}

A esto:

string lookupTestFile(const string& fileName) {
	return (dataPath() / fileName).c_str();
}

string getTmpFile(const string& fileName) {
	return (tmpPath() / fileName).c_str();
}

Tuve otro error mientras compilaba donde domTest se quejaba de que no encontraba la referencia a la librería libboost_system:

make[1]: Entering directory `/home/user/compilations/collada-dom/dom'
Linking build/linux-1.4/domTest
/usr/bin/ld: build/linux-1.4/obj/domTest.o: undefined reference to symbol 'boost::system::system_category()'
/usr/bin/ld: note: 'boost::system::system_category()' is defined in DSO /usr/lib/libboost_system.so.1.46.1 so try adding it to the linker command line
/usr/lib/libboost_system.so.1.46.1: could not read symbols: Invalid operation

Añadí -lboost_system -lboost_filesystem a la variable libOpts en el fichero “dom/make/common.mk” (línea 25) y se solucionó.

libOpts := -lboost_system -l boost_filesystem

También tuve un error similar mientras se compilaba la librería “viewer”, pero como no la necesitamos para nada no hay problema.