Я следовал инструкциям @jokerdino здесь, в askubuntu
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.7
Но чтобы получить успешную компиляцию, мне пришлось:
Что, как я понимаю, эффективно нарушает мультибиблиотечную модель Ubuntu. Так как мне правильно скомпилировать и удалить ссылки? Потому что сейчас я бы хотел кросс-компиляцию для 32 бит. (Используя Precise)
Я удалил символические ссылки, размещенные в моем вопросе.
Затем с предложением @ shuttle87 в askubuntu
я сделал следующее:
sudo apt-get install --reinstall binutils
sudo apt-get install --reinstall build-essential
sudo apt-get install --reinstall libc6-dev
sudo apt-get install --reinstall gcc-4.7-multilib
sudo apt-get install --reinstall g++-4.7-multilib
Тогда это сработало: gcc -m32 foo .c
для компиляции для 80386.
Но компиляция для x86-64 gcc foo.c НЕ работала.
Итак, я попробовал:
gcc foo.c -L /usr/lib/x86_64-linux-gnu
Но это тоже не сработало. Наконец, пришлось:
export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu
До того, как gcc foo.c будет работать.
Я использовал «readelf -h», чтобы убедиться, что исполняемые файлы были 80386 и X86-64.
Не понимаю, почему флаг 'L' не работал ...
Но, по крайней мере, я удалил эти символические ссылки и могу кросс-компилировать достаточно легко, используя «экспорт» ,