apt-get gcc 4.7 multilib

Я следовал инструкциям @jokerdino здесь, в askubuntu

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-4.7

Но чтобы получить успешную компиляцию, мне пришлось:

  1. экспорт LIBRARY_PATH = / usr / lib / x86_64-linux-gnu
  2. sudo ln -s /usr/lib/x86_64-linux-gnu/crti.o /usr/lib64/crti.o
  3. sudo ln -s /usr/lib/x86_64-linux-gnu/crtn.o /usr/lib64/crtn.o

Что, как я понимаю, эффективно нарушает мультибиблиотечную модель Ubuntu. Так как мне правильно скомпилировать и удалить ссылки? Потому что сейчас я бы хотел кросс-компиляцию для 32 бит. (Используя Precise)

1
задан 13 April 2017 в 15:23

1 ответ

Я удалил символические ссылки, размещенные в моем вопросе.

Затем с предложением @ 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' не работал ...

Но, по крайней мере, я удалил эти символические ссылки и могу кросс-компилировать достаточно легко, используя «экспорт» ,

0
ответ дан 13 April 2017 в 15:23

Другие вопросы по тегам:

Похожие вопросы: