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

0

Я пытаюсь скомпилировать 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. Это действительно не так сложно, не меняет никаких вариантов сборки или включает, и не использует каких-либо расширенных функций языка. Я действительно не понимаю, как это вызывает ошибку связывания, которая не отображается в сборке gcc vanilla. Кроме того, сама ошибка возникает в "cp-demangle.o", о которой я даже не думаю, что ее даже коснется патч! Мое лучшее предположение заключается в том, что оно имеет какое-то отношение к объявленному extern int cdepn_dump или объявлению функций в tree.h.

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

  • 0
    в соответствии с fossies.org/linux/privat/codeviz-1.0.12.tar.gz/index_ap.html пакеты содержат debian/ и, в частности, debian/rules , который можно использовать для компиляции с использованием программы dpkg-buildpackage без необходимости Делать что-нибудь"
  • 0
    Я пробовал это, а также пробовал различные исправленные Debian версии gcc. Что касается файла debian / rules, он просто вызывает скрипт bash, который загружает vanilla gcc, применяет патч и компилирует gcc, как я делал выше.
Показать ещё 1 комментарий
Теги:
gcc
codeviz

1 ответ

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

to 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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню