Компиляция патча CodeViz для GCC на 64-битном Debian

Я пытаюсь собрать CodeViz на 64-битном Debian. Однако я обнаружил, что включенный патч для GCC приводит к тому, что GCC не компилируется. Когда я извлекаю GCC 4.6 и компилирую его вручную (запустив

$ ../gcc-4.6.4/configure --prefix=/home/jeremy/gcc-codeviz --enable-languages=c,c++ --disable-bootstrap
$ make

) компилируется без ошибок. Тем не менее, когда я применяю включенный патч, он завершается с ошибкой

/usr/bin/ld: ../libsupc++/.libs/libsupc++convenience.a(cp-demangle.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
../libsupc++/.libs/libsupc++convenience.a(cp-demangle.o): error adding symbols: Bad value
collect2: ld returned 1 exit status

Патч можно посмотреть здесь http://pastebin.com/djSQYe5a . Это на самом деле не так сложно, не меняет какие-либо параметры сборки и не включает в себя, и не использует никаких расширенных языковых функций. Я действительно не понимаю, как это вызывает ошибку компоновки, которая не отображается в сборке vanilla gcc. Кроме того, сама ошибка возникает в «cp-demangle.o», который, я думаю, не должен даже коснуться патча! Мое лучшее предположение состоит в том, что это как-то связано с объявленным extern int cdepn_dump или объявлением функций в tree.h.

Любая помощь приветствуется.

0

Решение

Этот патч можно применить к исходному к Debian gcc-4.6

apt-get source gcc-4.6
cp gcc-4.6.2-cdepn.diff gcc-4.6-4.6.3/debian/patches

в rules.patch

nano gcc-4.6-4.6.3/debian/rules.patch

debian_patches += \
libstdc++-pic \
...
gcc-4.6.2-cdepn \

Основная ошибка возникает из-за функции fprintf.
Флаги компилятора по умолчанию включают -Wformat -Wformat-security что и дает эту ошибку. Отключено с -Wformat = 0 или -Wno-format-security в CPPFLAGS или / и CFLAGS.

Также посмотрите gcc-4.6-4.6.3 / debian / patches / fix-warnings.diff для src / gcc / toplev.c и gcc-4.6-4.6.3 / debian / rules2, DPKG-buildflags
просто для информации.

export DEB_BUILD_MAINT_OPTIONS=hardening=-all,-format
export DEB_CFLAGS_MAINT_APPEND=-fPIC,-Wformat=0,-Wno-format-security
export DEB_CPPFLAGS_MAINT_APPEND=-fPIC,-Wformat=0,-Wno-format-security
export DEB_CXXFLAGS_MAINT_APPEND=-fPIC,-Wformat=0,-Wno-format-security
dpkg-buildflags

dpkg-buildpackage -b -d -rfakeroot -us -uc
0

Другие решения

Других решений пока нет …