Ubuntu: Какой gcc использовать при кросс-компиляции для STM32 (Кора-M3)?

Можно включить UTF8 по умолчанию с эти -C флаг:

perl -CSD -ne 'print join("\n",split //);' utf8.txt

переключатель -CSD включает UTF8 безусловно; если Вы будете использовать просто -C, то это включит UTF8, только если соответствующие переменные среды (LC_ALL, LC_TYPE и LANG) указывают так. См. perlrun для деталей.

Это не рекомендуется, если Вы не вызываете жемчуг непосредственно (в частности, он не мог бы работать надежно при передаче опций жемчугу от строки хижины). См. другие ответы в этом случае.

9
задан Johan 10 April 2010 в 06:05
поделиться

1 ответ

Поскольку этот ответ стал немного "нечитаемым", Я создал страницу с этой информацией.



Это свободная интерпретация, основанная на этих двух руководствах, но мне пришлось изменить версии и применить несколько патчей, чтобы заставить его работать.

Сначала некоторые базовые вещи

sudo apt-get install flex bison libgmp3-dev libmpfr-dev autoconf texinfo build-essential

Затем я создал место для хранения цепочки инструментов (замените cj.users на то, что вам подходит).

export TOOLPATH=/usr/local/cross-cortex-m3
sudo mkdir /usr/local/cross-cortex-m3
sudo chown cj.users /usr/local/cross-cortex-m3

Binutils

wget http://ftp.gnu.org/gnu/binutils/binutils-2.19.tar.bz2
tar -xvjf binutils-2.19.tar.bz2
cd binutils-2.19
mkdir build
cd build
../configure --target=arm-none-eabi --prefix=$TOOLPATH --enable-interwork --enable-multilib --with-gnu-as --with-gnu-ld --disable-nls

Примените патч к tc-arm.c в соответствии с этой информацией http://sourceware.org/bugzilla/show_bug.cgi?id=7026 / http: // sourceware. org / bugzilla / attachment.cgi? id = 3058 &action = view

vi ../gas/config/tc-arm.c


make 
make install
export PATH=${TOOLPATH}/bin:$PATH
cd ../..

gcc

wget ftp://ftp.sunet.se/pub/gnu/gcc/releases/gcc-4.3.4/gcc-4.3.4.tar.bz2
tar -xvjf gcc-4.3.4.tar.bz2
cd gcc-4.3.4
mkdir build
cd build
../configure --target=arm-none-eabi --prefix=$TOOLPATH --enable-interwork --enable-multilib --enable-languages="c,c++" --with-newlib --without-headers --disable-shared --with-gnu-as --with-gnu-ld
make all-gcc
make install-gcc
cd ../..

Newlib

wget ftp://sources.redhat.com/pub/newlib/newlib-1.17.0.tar.gz
wget http://www.esden.net/content/embedded/newlib-1.14.0-missing-makeinfo.patch
tar -xvzf newlib-1.17.0.tar.gz
cd newlib-1.17.0

Тогда я хотел бы применить патч с чем-то вроде этого (но это не сработало)

patch -p1 -i ../newlib-1.14.0-missing-makeinfo.patch

Итак, я открыл его вручную и отредактировал строку 6651 в соответствии с патчем.

vi configure

mkdir build
cd build
../configure --target=arm-none-eabi --prefix=$TOOLPATH --enable-interwork --disable-newlib-supplied-syscalls --with-gnu-ld --with-gnu-as --disable-shared
make CFLAGS_FOR_TARGET="-ffunction-sections -fdata-sections -DPREFER_SIZE_OVER_SPEED -D__OPTIMIZE_SIZE__ -Os -fomit-frame-pointer -mcpu=cortex-m3 -mthumb -D__thumb2__ -D__BUFSIZ__=256" CCASFLAGS="-mcpu=cortex-m3 -mthumb -D__thumb2__"
make install
cd ../..

Подробнее gcc

cd gcc-4.3.4/build
make CFLAGS="-mcpu=cortex-m3 -mthumb" CXXFLAGS="-mcpu=cortex-m3 -mthumb" LIBCXXFLAGS="-mcpu=cortex-m3 -mthumb" all
make install

Подведение итогов

Я просто добавил несколько путей в свой ~ / .bashrc

#STM32 gcc...
export TOOLPATH=/usr/local/cross-cortex-m3
export PATH=${TOOLPATH}/bin:$PATH

И я должен быть готов к следующему шагу ...

6
ответ дан 4 December 2019 в 23:40
поделиться
Другие вопросы по тегам:

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