Рабочий вариант с правильными --target
и т.д.
export GCC_VERSION=7.3.0
apk add --no-cache make build-base mpfr-dev mpc1-dev isl-dev
wget https://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.gz
tar -xzf gcc-${GCC_VERSION}.tar.gz
cd gcc-${GCC_VERSION}
./configure \
--prefix=/usr/local \
--build=$(uname -m)-alpine-linux-musl \
--host=$(uname -m)-alpine-linux-musl \
--target=$(uname -m)-alpine-linux-musl \
--enable-checking=release \
--disable-fixed-point \
--disable-libmpx \
--disable-libmudflap \
--disable-libsanitizer \
--disable-libssp \
--disable-libstdcxx-pch \
--disable-multilib \
--disable-nls \
--disable-symvers \
--disable-werror
make -j $(nproc)
make install
Тестовый компилятор C:
echo '#include <stdio.h>
int main() {
printf("Hello, C world!\n");
return 0;
}' | gcc -x c - &&./a.out
Тестовый компилятор C++:
echo '#include <iostream>
int main () {
std::cout << "Hello, C++ world!\n";
return 0;
}' | g++ -x c++ - &&./a.out
Раздел sda2
является разделом-контейнером. Его формат очень похож на Основная загрузочная запись(MBR )диска и известен как Расширенная загрузочная запись(EBR ), которая сама занимает один из четырех возможных слотов основного раздела. Он существует, чтобы преодолеть это историческое ограничение в 4 раздела в MBR. Он включает в себя расширенные разделы (, которые отображаются, начиная с раздела 5 в Linux )и связаны :каждый последующий расширенный раздел также имеет EBR с двумя записями :одна для ссылки на данные самого раздела, и один для ссылки на EBR следующего расширенного раздела, если таковой имеется. Все расширенные разделы (, так что здесьsda5
)находятся внутри их раздела-контейнера (, здесь sda2
), и, таким образом, fdisk всегда будет сообщать о перекрывающихся блоках.
С точки зрения MBR он использует все пространство, зарезервированное для добавления внутри него расширенных разделов, поэтому его размер должен быть больше, чем размер всех расширенных разделов.
С точки зрения API-интерфейса ядра, отчитывающегося перед пользовательским пространством и, следовательно, lsblk
, раздел 2 — это всего лишь связующий раздел, отображаемый из любезности, и в него не следует вмешиваться. Сообщаемый размер данных представляет собой только служебные данные EBR, здесь 1 КБ, иначе чтение или запись (, что уже плохо, поскольку может разрушить первоначальную ссылку на все расширенные разделы в )на раздел 2 также позволит чтение или запись в раздел 5. Можно было бы даже указать размер 0, это не имело бы большого значения. Это отличается от обработки самого sda
, который представляет весь диск. Если учесть, что дополнительные расширенные разделы связаны с EBR каждого предыдущего расширенного раздела,это имеет смысл :их внутренний EBR даже не доступен, видны только их фактические данные.
Вам следует рассмотреть возможность использования GPT разбиения вместо разбиения MBR/EBR. :Это современная схема разбиения, которая намного разумнее и не имеет таких ограничений и обходных путей. Или вы также можете выбрать LVM в одном (первичном, нет необходимости в расширенном, а затем в )разделе :это тоже форма контейнера для разделения блоков на другом уровне абстракции и обеспечивает много функций.