Pour des raisons de commodité, j'essaie de lancer une installation par ailleurs "normale" de Gentoo Linux en tant qu'invité dans VirtualBox sur un hôte Windows 7. J'ai démarré l'installation en utilisant VirtualBox, même. Mais maintenant, après environ un an de reconstruction inévitable de tous les paquets sur Portage avec -march = native dans les indicateurs de mon compilateur, j'ai constaté que tous les programmes non triviaux (trivial = ls, cd, cat, nontrivial = vim, man, pratiquement tout ce qui est lié à la bibliothèque standard c ++) est tué presque immédiatement au démarrage. Le journal du noyau indique qu'il a capturé des instructions illégales, comme si le programme avait été compilé avec des extensions de processeur non prises en charge par le processeur hôte. Mais ça le fait! D'après ce que je comprends des hyperviseurs tels que VirtualBox, les programmes devraient toujours fonctionner essentiellement sur du métal nu.
Ma question est, qu'est-ce qui donne? Les ordinateurs virtuels ne sont-ils autorisés à utiliser que certaines des instructions disponibles sur le processeur hôte? Ou est-ce un problème totalement différent?
-march=native
ou-march=haswell
produire des exécutables sur un invité Gentoo.