Comment faire pour compiler CMake pour ARM avec CMake

En bref, je suis en train de faire de la compilation croisée avec CMake CMake, et je ne pense pas que je suis associant les bibliothèques correctement. Ce que je veux faire ne peut pas être possible, mais je serais au moins aimerais savoir pourquoi il n'est pas possible si c'est le cas.

Système: L'hôte est un Linux avec un Cavium PROCESSEUR ARM9. Il est actuellement en cours d'exécution de la version 2.6.24.4 du noyau Linux et Debian 5.0 (Lenny). Mon poste de travail est un De base i5 Ubuntu 12.04 LTS (Precise Pangolin).

Dans l'ensemble, mon but est d'obtenir ROS en cours d'exécution sur la machine Linux. J'ai compiler à partir des sources, plutôt que d'utiliser apt depuis Debian 6.0 (Squeeze) binaires nécessitent support de pouce que le Cavium ne donne pas, et pas beaucoup de paquets nécessaires sont disponibles pour Debian 5.0 (Lenny). J'avais fait des progrès installer les bibliothèques nécessaires, mais quand je suis arrivé à l'étape 1.3.1 et essayé de lancer CMake, j'ai obtenu l'erreur

CMake 2.8 ou supérieur est requis. Vous exécutez la version 2.6.0

Ensuite, j'ai essayé de télécharger et de build CMake 2.8.8 sur la sous Linux, mais c'en était trop pour le système. Lorsque cela a échoué, j'ai téléchargé l'ensemble des outils proposés sur le site internet du fabricant et utilisé le guide de compilation croisée à [www.cmake.org/Wiki/CMake_Cross_Compiling] pour construire le CMake exécutables. Voici ma chaîne de traitement du fichier:

# This one is important
SET(CMAKE_SYSTEM_NAME Linux)

# Specify the cross compiler
SET(CMAKE_C_COMPILER   /pathto/crosstool-linux-gcc-4.5.2-gclibc-2.9-oabi/arm-unknown-linux-gnu/bin/arm-unknown-linux-gnu-gcc)
SET(CMAKE_CXX_COMPILER /pathto/crosstool-linux-gcc-4.5.2-gclibc-2.9-oabi/arm-unknown-linux-gnu/bin/arm-unknown-linux-gnu-g++)

# Where is the target environment
SET(CMAKE_FIND_ROOT_PATH  /pathto/crosstool-linux-gcc-4.5.2-gclibc-2.9-oabi/arm-unknown-linux-gnu /pathto/crosstool-linux-gcc-4.5.2-gclibc-2.9-oabi/arm-unknown-linux-gnu/arm-unknown-linux-gnu)

# Search for programs in the build host directories
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)

# For libraries and headers in the target directories
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

Cependant, l'utilisation de la binaire sous Linux donne l'erreur

cmake: /usr/lib/libstdc++..6: la version " GLIBCXX_3.4.14' not found (requis par cmake)

Bien sûr, la bibliothèque n'est pas là:

prompt# strings /usr/lib/libstdc++.so.6 | grep GLIBC
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBC_2.3
GLIBC_2.0
GLIBC_2.3.2
GLIBC_2.1
GLIBC_2.1.3
GLIBC_2.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

Je n'ai jamais cross-compilé avant, mais je peux voir l'un des deux scénarios qui se passe: le binaire a été créé avec un lien vers une version supérieure de glibcxx sur la machine hôte ou le fabricant de l'ensemble des outils plus modernes que leur image. Je ne sais pas comment faire pour vérifier ce qui se passe ou si quelque chose d'autre se passe que je ne connais pas.

Mon dernier effort en essayant de statiquement à la compilation croisée CMake l'espoir de se débarrasser de l'erreur de couplage avec

cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain-technologic.cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXE_LINKER_FLAGS_RELEASE="-static" ..

J'ai eu des erreurs de génération, et que le binaire ne fonctionne pas non plus. J'ai eu:

FATAL: kernel too old
Segmentation fault

J'avais essayer d'installer glibcxx 3.4.14 sous Linux, mais il n'a pas l'air comme il est disponible pour ce processeur.

J'ai essayé de chercher CMake dépendances ou à la configuration système requise et ne peut pas trouver quoi que ce soit. J'ai aussi fait des recherches sur la façon de construire CMake, mais la plupart des recherches s'orientent comment construire d'autres choses avec CMake plutôt que de construire de CMake.

source d'informationauteur tbh