Lx4U-book/docs/build-system/gcc.md

103 lines
4.2 KiB
Markdown
Raw Normal View History

2021-06-10 21:28:16 +08:00
<pkg :name="'gcc'" instsize showsbu2></pkg>
2021-05-12 00:22:43 +08:00
<script>
new Vue({
el: '#main',
data: { package: {} },
mounted: function () {
this.getPackage('gcc');
},
methods: {
getPackage: function(name) {
getPackage(name)
.then(response => this.package = response);
},
}
})
</script>
## Подготовка
Исправьте пути установки библиотек:
2021-06-10 21:28:16 +08:00
<package-script :package="'gcc'" :type="'prepare'"></package-script>
2021-05-12 00:22:43 +08:00
## Настройка
?> На данном этапе необходимы только компиляторы для C и C++, однако вы можете собрать компиляторы для любых поддерживаемых GCC языков программирования, перечислив их через запятые в опции configure `--enable-languages=c,c++`. GCC поддерживает следующие языки - `c,c++,d,fortran,go,objc,obj-c++`. Вы можете собрать все доступные компиляторы, добавив параметр `--enable-languages=c,c++,d,fortran,go,objc,obj-c++`. Если позднее вам потребуется компилятор для какого либо языка из этого списка - пересоберите GCC с его поддержкой.
2021-05-12 00:22:43 +08:00
2021-06-10 21:28:16 +08:00
<package-script :package="'gcc'" :type="'configure'"></package-script>
2021-05-12 00:22:43 +08:00
### Для multilib
2021-06-10 21:28:16 +08:00
<package-script :package="'gcc'" :type="'multi_configure'"></package-script>
2021-05-12 00:22:43 +08:00
2021-06-10 21:28:16 +08:00
### Значения параметров
2021-05-12 00:22:43 +08:00
`--disable-bootstrap` - Предотвращает многократную пересборку GCC
`LD=ld` - Сообщает GCC использовать ранее установленную версию компоновщика
## Сборка
2021-06-10 21:28:16 +08:00
<package-script :package="'gcc'" :type="'build'"></package-script>
2021-06-12 07:23:25 +08:00
2021-05-12 00:22:43 +08:00
## Тестирование
- Увеличьте размер стека по умолчанию
- Произведите тестирование от непривилегированного пользователя во избежание непредвиденных ситуаций с системой.
2021-06-12 07:23:25 +08:00
2021-06-10 21:28:16 +08:00
<package-script :package="'gcc'" :type="'test'"></package-script>
2021-05-12 00:22:43 +08:00
2021-06-17 15:48:45 +08:00
> Тестирование занимает достаточно много времени.
2021-06-12 17:36:17 +08:00
2021-05-12 00:22:43 +08:00
Для просмотра итогов теста выполните:
```bash
../contrib/test_summary
```
?> Известно, что 6 тестов, связанных с `get_time`, дают сбои. По видимому, это связано с локалью `en_HK`. Кроме того, тест `COSTEXPR-52830` не удается.
2021-06-12 07:23:25 +08:00
2021-05-12 00:22:43 +08:00
## Установка
2021-06-10 21:28:16 +08:00
<package-script :package="'gcc'" :type="'install'"></package-script>
2021-05-12 00:22:43 +08:00
2021-06-10 21:28:16 +08:00
- Удалите ненужную директорию,
- Убедитесь, что владелец установленных заголовков корректный,
2021-06-10 21:28:16 +08:00
- По историческим причинам некоторые программы могут пытаться найти `cpp` в директории `/lib`. Создайте ссылку,
- Для поддержки LTO требуется следующая символическая ссылка,
- Переместите файлы в правильное место:
2021-05-12 00:22:43 +08:00
2021-06-10 21:28:16 +08:00
<package-script :package="'gcc'" :type="'postinstall'"></package-script>
2021-05-12 00:22:43 +08:00
Проверьте работоспособность:
```bash
echo 'int main(){}' > dummy.c
cc dummy.c
2021-06-17 15:48:45 +08:00
./a.out | echo success
2021-05-12 00:22:43 +08:00
```
Для multilib:
```bash
echo 'int main(){}' > dummy.c
cc -m32 dummy.c
2021-06-17 15:48:45 +08:00
./a.out | echo success
2021-05-12 00:22:43 +08:00
```
Удалите тестовые файлы:
```bash
rm -v dummy.c a.out
```
## Установленные файлы
Программы: c++ (ссылка на g++), cc (ссылка на gcc), cpp, g++, gcc, gcc-ar, gcc-nm, gcc-ranlib, gcov, gcov-dump и gcov-tool
2021-05-12 00:22:43 +08:00
Библиотеки: libasan.{a,so}, libatomic.{a,so}, libcc1.so, libgcc.a, libgcc_eh.a, libgcc_s.so, libgcov.a, libgomp.{a,so}, libitm.{a,so}, liblsan.{a,so}, liblto_plugin.so, libquadmath.{a,so}, libssp.{a,so}, libssp_nonshared.a, libstdc++.{a,so}, libstdc++fs.a, libsupc++.a, libtsan.{a,so} и libubsan.{a,so}
2021-05-12 00:22:43 +08:00
Директории: /usr/include/c++, /usr/lib/gcc, /usr/libexec/gcc и /usr/share/gcc-11.1.0