Различие является очень определенным для платформы.
часы () очень отличаются в Windows, чем на Linux, например.
Для вида примеров Вы описываете, Вы, вероятно, хотите "timeit" модуль вместо этого.
Это было отвлекающим маневром. Очевидно, кросс-компиляция цепочки инструментов для существующей системы с работающим GLIBC не требует перекомпиляции GLIBC. Честно говоря, я не знаю, как я проигнорировал этот факт.
Так что, хотя я до сих пор не знаю, как скомпилировать GCC и GLIBC, мне нужен только GCC, я собираюсь отметить это как закрыто.
Если смогу, я вернусь к этому сообщению и отмечу, что я в итоге сделал.
РЕДАКТИРОВАТЬ:
Оформить заказ это .
Вот сценарий установки HelenOS arm-32 toolchain, он должен делать то, что вы хотите, с очень немного возиться. Сейчас я использую его в Ubuntu (я один из разработчиков HelenOS). Это было написано Мартином Деки:
#!/bin/bash
# Cross-Compiler Toolchain for ${PLATFORM}
# by Martin Decky <martin@decky.cz>
#
# GPL'ed, copyleft
#
check_error() {
if [ "$1" -ne "0" ]; then
echo
echo "Script failed: $2"
exit
fi
}
if [ -z "${CROSS_PREFIX}" ] ; then
CROSS_PREFIX="/usr/local"
fi
BINUTILS_VERSION="2.19.1"
GCC_VERSION="4.3.3"
BINUTILS="binutils-${BINUTILS_VERSION}.tar.gz"
GCC_CORE="gcc-core-${GCC_VERSION}.tar.bz2"
GCC_OBJC="gcc-objc-${GCC_VERSION}.tar.bz2"
GCC_CPP="gcc-g++-${GCC_VERSION}.tar.bz2"
BINUTILS_SOURCE="ftp://ftp.gnu.org/gnu/binutils/"
GCC_SOURCE="ftp://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/"
PLATFORM="arm"
WORKDIR=`pwd`
TARGET="${PLATFORM}-linux-gnu"
PREFIX="${CROSS_PREFIX}/${PLATFORM}"
BINUTILSDIR="${WORKDIR}/binutils-${BINUTILS_VERSION}"
GCCDIR="${WORKDIR}/gcc-${GCC_VERSION}"
OBJDIR="${WORKDIR}/gcc-obj"
echo ">>> Downloading tarballs"
if [ ! -f "${BINUTILS}" ]; then
wget -c "${BINUTILS_SOURCE}${BINUTILS}"
check_error $? "Error downloading binutils."
fi
if [ ! -f "${GCC_CORE}" ]; then
wget -c "${GCC_SOURCE}${GCC_CORE}"
check_error $? "Error downloading GCC Core."
fi
if [ ! -f "${GCC_OBJC}" ]; then
wget -c "${GCC_SOURCE}${GCC_OBJC}"
check_error $? "Error downloading GCC Objective C."
fi
if [ ! -f "${GCC_CPP}" ]; then
wget -c "${GCC_SOURCE}${GCC_CPP}"
check_error $? "Error downloading GCC C++."
fi
echo ">>> Creating destionation directory"
if [ ! -d "${PREFIX}" ]; then
mkdir -p "${PREFIX}"
test -d "${PREFIX}"
check_error $? "Unable to create ${PREFIX}."
fi
echo ">>> Creating GCC work directory"
if [ ! -d "${OBJDIR}" ]; then
mkdir -p "${OBJDIR}"
test -d "${OBJDIR}"
check_error $? "Unable to create ${OBJDIR}."
fi
echo ">>> Unpacking tarballs"
tar -xvzf "${BINUTILS}"
check_error $? "Error unpacking binutils."
tar -xvjf "${GCC_CORE}"
check_error $? "Error unpacking GCC Core."
tar -xvjf "${GCC_OBJC}"
check_error $? "Error unpacking GCC Objective C."
tar -xvjf "${GCC_CPP}"
check_error $? "Error unpacking GCC C++."
echo ">>> Compiling and installing binutils"
cd "${BINUTILSDIR}"
check_error $? "Change directory failed."
./configure "--target=${TARGET}" "--prefix=${PREFIX}" "--program-prefix=${TARGET}-" "--disable-nls"
check_error $? "Error configuring binutils."
make all install
check_error $? "Error compiling/installing binutils."
echo ">>> Compiling and installing GCC"
cd "${OBJDIR}"
check_error $? "Change directory failed."
"${GCCDIR}/configure" "--target=${TARGET}" "--prefix=${PREFIX}" "--program-prefix=${TARGET}-" --with-gnu-as --with-gnu-ld --disable-nls --disable-threads --enable-languages=c,objc,c++,obj-c++ --disable-multilib --disable-libgcj --without-headers --disable-shared
check_error $? "Error configuring GCC."
PATH="${PATH}:${PREFIX}/bin" make all-gcc install-gcc
check_error $? "Error compiling/installing GCC."
echo
echo ">>> Cross-compiler for ${TARGET} installed."
Извините за перенос строк, это должно быть легко исправить. Если вы хотите получить его по ссылке pastebin или http, просто оставьте комментарий.
Если вы действительно хотите создать для себя всю цепочку инструментов:
http://frank.harvard.edu/~coldwell/toolchain/
http: // ftp. snapgear.org/pub/snapgear/tools/arm-linux/build-arm-linux-3.4.4
Однако имейте в виду, что вы должны искать матрицу совместимости инструментальной цепочки, иначе вы можете столкнуться со странными ошибками компиляции. 1232] Если у вас еще есть возможность использовать crossstool-ng, то вот над чем я работал последние несколько дней:
http://blog.stranadurakov.com/2009/08/04/how-to- arm-linux /
Здесь вы найдете мой файл конфигурации crossstool-ng, который у меня сработал.
Недавно я построил набор инструментов GNU для ARM с помощью crossstool-ng. Потребовалось немного проб и ошибок, чтобы выяснить, какие версии компонентов инструментальной цепочки будут хорошо работать вместе, но я наконец добился того, что он работает со следующими версиями:
Посмотрите, подойдут ли они и вам.
Также OpenWrt as часть процесса сборки создает набор инструментов для кросс-компиляции. Вы можете попробовать это, выбрав одну из плат на базе ARM в качестве цели, даже если вы не заинтересованы в создании беспроводного маршрутизатора.
Мне повезло с использованием buildroot для создания наборов инструментов и библиотек для кросс-компиляции Linux. Buildroot использует облегченную библиотеку uclibc C, а не glibc, поэтому она может не работать для ваших целей. (И получить цепочку инструментов таким образом может быть не так интересно, как и компилировать ее самостоятельно.)
Добро пожаловать , вы не одиноки.
История
Я не знаю, почему кросс-компиляция ARM стала таким кошмаром. Это не мое мнение, давайте посмотрим, что говорят другие ...
Создание кросс-инструментальной цепочки gcc / glibc для использования во встраиваемых системах развитие было страшным перспектива, требующая железной воли, дней, если не недели усилий, много Unix и Знания Гну, а иногда и желание выбирайте изворотливые ярлыки. ( http://www.kegel.com/crosstool/ )
Мой компьютер ARM (GuruPlug) работает на Debian, поэтому мне просто нужен стандартный компилятор G ++ без каких-либо настроек.
Я использую на своем ноутбуке 32-битную Ubuntu. Есть пакеты deb для кросс-компилятора AVR или даже для Z80, но нет для ARM - почему? Хорошо, мы должны его скомпилировать. Пойдем. Меня немного сбивает с толку процесс компиляции инструментальной цепочки. Makefile длиной 14 тыс. Строк, спасибо.
Через несколько дней (и ночей) я потерпел неудачу.
Решение
Наконец, я нашел готовое решение. Я только что загрузил облегченную версию этого материала: http://www.codesourcery.com/sgpp/lite_edition.html и теперь я счастлив. У него ужасный установщик, но он работает. Он говорит: arm-none-linux-gnueabi-g ++ (Sourcery G ++ Lite 2010q1-202) 4.4.1 , последняя версия G ++.
(У моего друга Mac, и он также не смог скомпилировать цепочку инструментов после недельной борьбы с ним. Сейчас он использует этот компилятор на виртуальной машине под управлением Ubuntu.)
Вам действительно следовало бы приложить больше усилий к использованию crosstool-NG, поскольку список рассылки crosstool очень реактивен. Поскольку понимание всего процесса - это огромная задача, понимание того, как использовать инструмент, который вы можете использовать повторно, IMHO более интересно.