Мерцание и артефакты при захвате экрана с помощью ffmpeg и x11grab

Я собирал новые версии gcc для rhel6 уже несколько версий (начиная с 4.7.x и заканчивая 5.3.1).

Процесс довольно прост благодаря Якубу Елинеку из Redhat fedora gcc builds found on koji

Просто возьмите последний src rpm для той версии, которая вам нужна (например, 5.3.1).

В принципе, вы должны начать с определения требований к сборке, выполнив rpm -qpR src.rpm, ища любые требования к версии:

rpm -qpR gcc-5.3.1-4.fc23.src.rpm | grep -E '= [[:digit:]]'
binutils >= 2.24
doxygen >= 1.7.1
elfutils-devel >= 0.147
elfutils-libelf-devel >= 0.147
gcc-gnat >= 3.1
glibc-devel >= 2.4.90-13
gmp-devel >= 4.1.2-8
isl = 0.14
isl-devel = 0.14
libgnat >= 3.1
libmpc-devel >= 0.8.1
mpfr-devel >= 2.2.1
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
systemtap-sdt-devel >= 1.3

Теперь наступает утомительная часть - любой пакет, который имеет версию выше, чем предоставляет yum для вашего дистрибутива, должен быть загружен с koji, и рекурсивно повторять процесс, пока все требования к зависимостям не будут выполнены.

Я жульничаю, кстати.
Обычно я перепаковываю rpm, чтобы он содержал правильное дерево сборки, используя средства gnu для использования правильно размещенных и названных требований, поэтому gmp/mpc/mpfr/isl (cloog больше не требуется) загружаются и распаковываются по правильному пути, а новый (раздутый) tar перестраивается в новый src rpm (с небольшими изменениями в файле spec) без зависимости от их упакованных (rpm) версий. Поскольку я знаю, что никто не использует ADA, я просто удаляю части, относящиеся к gnat, из specfile, что еще больше упрощает процесс сборки, оставляя мне только binutils.
Gcc может собирать со старыми binutils, поэтому, если вы торопитесь, отредактируйте спецификационный файл так, чтобы он требовал версию binutils, которая уже есть в вашей системе. Это приведет к немного искалеченному gcc, но в основном он будет работать достаточно хорошо.
В основном это работает достаточно хорошо.

UPDATE 1

Самый простой метод открытия src rpm - это, вероятно, yum install rpm и доступ ко всему в ~/rpmbuild, но я предпочитаю

mkdir gcc-5.3.1-4.fc23
cd gcc-5.3.1-4.fc23
rpm2cpio ../gcc-5.3.1-4.fc23.src.rpm | cpio -id
tar xf gcc-5.3.1-20160212.tar.bz2
cd gcc-5.3.1-20160212
contrib/download_prerequisites
cd ..
tar caf gcc-5.3.1-20160212.tar.bz2 gcc-5.3.1-20160212
rm -rf gcc-5.3.1-20160212
# remove gnat
sed -i '/%global build_ada 1/ s/1/0/' gcc.spec
sed -i '/%if !%{build_ada}/,/%endif/ s/^/#/' gcc.spec
# remove gmp/mpfr/mpc dependencies
sed -i '/BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1, libmpc-devel >= 0.8.1/ s/.*//' gcc.spec
# remove isl dependency
sed -i '/BuildRequires: isl = %{isl_version}/,/Requires: isl-devel = %{isl_version}/ s/^/#/' gcc.spec
# Either build binutils as I do, or lower requirements
sed -i '/Requires: binutils/ s/2.24/2.20/' gcc.spec
# Make sure you don't break on gcc-java
sed -i '/gcc-java/ s/^/#/' gcc.spec

У вас также есть возможность установить префикс, чтобы этот rpm устанавливался бок о бок без нарушения distro rpm (но это требует изменения имени и некоторых модификаций внутренних имен пакетов). Я обычно добавляю модуль окружения, чтобы я мог загружать и выгружать этот gcc по мере необходимости (аналогично тому, как работают коллекции) как часть rpm (поэтому я добавляю новую зависимость).

Наконец, создайте дерево rpmbuild и поместите файлы туда, куда они должны пойти и собираться:

yum install rpmdevtools rpm-build
rpmdev-setuptree
cp * ~/rpmbuild/SOURCES/
mv ~/rpmbuild/{SOURCES,SPECS}/gcc.spec
rpmbuild -ba ~/rpmbuild/SPECS/gcc.spec

UPDATE 2

Обычно не следует использовать "серверную" ОС для разработки - вот почему у вас есть fedora, которая уже поставляется с последней версией gcc. У меня есть некоторые особые требования, но вам действительно следует рассмотреть возможность использования правильного инструмента для этой задачи - rhel/centos для запуска производственных приложений, fedora для разработки этих приложений и т.д.

0
21.11.2018, 17:24
1 ответ

Если у вас есть графический процессор Nvidia, попробуйте отключить параметр OpenGL «Разрешить перелистывание», это вызывает это, по крайней мере, у меня так было

1
28.01.2020, 02:41

Теги

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