La Cross compilation: GCC ignore --sysroot

Je suis en train de faire de la compilation croisée des programmes (actuellement avconv de libav) pour un Nokia N9 téléphone à l'aide de l'arm-linux-gnueabi-gcc à partir de Linux Mint 64 bits référentiel. Le compilateur de la version de la libc est 2.15 et le téléphone a libc-2.10.1. Ils ont une incompatibilité dans la bibliothèque de mathématiques, ce qui me donne une erreur de segmentation quand j'ai compiler et exécuter le avconv programme de libav.

J'avais besoin pour compiler et lier à l'encontre de l'ancienne version de la libc, mais je n'ai pas réussi à obtenir la --sysroot option.

J'ai fait un petit programme de test pour éviter à plusieurs reprises la configuration et la compilation de libav.

arm-linux-gnueabi-gcc --sysroot=/opt/CrossCompilation/NokiaN9/ -o output.sysroot hello.c
arm-linux-gnueabi-gcc -o output.nosysroot hello.c

Les deux commandes permettant de créer une identique du fichier de sortie. C'est ce que hello.c ressemble:

#include <stdio.h>
#include <math.h>

int main() {
    printf("Hello, World! Sin = %f\n", sin(0.6451));
}

Le plus étrange, c'est que gcc ignore complètement le --sysroot option. Si je passe un répertoire inexistant à sysroot, il produit toujours exactement la même sortie binaire:

arm-linux-gnueabi-gcc --sysroot=/foo/bar -o output.foobar hello.c

Il n'a même pas se plaindre d'éventuelles erreurs. Quel est le problème?

Exécuter le compilateur avec arm-linux-gnueabi-gcc -v et regardez la valeur de --with-sysroot; c'est le répertoire le compilateur a été construit avec. Si vous avez ce répertoire présent sur votre machine (peut-être avec un autre compilateur), puis le --sysroot peut ne pas fonctionner. Qu'est-ce que le gcc version?
Il n'y a pas de "--with-sysroot" défini. gcc est la version 4.6.3
Mais au lieu de "grep /usr/arm" trouve "--with-gxx-inclure-dir=/usr/arm-linux-gnueabi/include/c++/4.6.3", "--includedir=/usr/arm-linux-gnueabi/include", "--with-headers=/usr/arm-linux-gnueabi/include", et "--with-libs=/usr/arm-linux-gnueabi/lib".
--with-libs signifie que votre gcc est compilé sans --sysroot de soutien.

OriginalL'auteur trololo | 2013-07-11