LINUX.ORG.RU

Помогите откомпилировать программу.


0

0

Хочу обновить gcc, как это сделать наиболее правильным образом? Надо ли менять glibc при этом? Если надо, то как при этом kernel panic не получить? Сейчас стоит asplinux 7.3

Можно ли поставить несколько версий gcc и как их выбирать для ./configure и make?

gcc -v выдает 2.96 версию, gcc3 -v выдает версию 3.0.4

У меня есть тарболы с gcc 3.3.3, gcc 3.3.4 и gcc 3.4 и тарбол с glibc 2.3.2, текущая в системе версия - glibc 2.2.5

Пойти на обновление компиляторов меня заставило то, что никак не собирается cinepaint 0.19-0 - возникают ошибки при компиляции, make компилирует, я вижу пару сотен строчек вывода, но потом завершается с сообщением об ошибке:

make[2]: *** [hdr.o] Ошибка 1

make[2]: Выход из каталог '/home/mm/soft/cinepaint/cinepaint-0.19-0/plug-ins/hdr:

make[1]: *** [all recursive] Ошибка 1

make[1]: Выход из каталог '/home/mm/soft/cinepaint/cinepaint-0.19-0/plug-ins

В каталоге hdr, как я понял, почему то не собралось hdr.o Я попытался вручную скомпилировать hdr.c так ругань на

#include "gtk/gtk.h"

#include "lib/plugin_main.h"

#include "lib/ui.h"

#include "fromrad.h"

#include "app/image_render.h"

За исключением fromrad.h остальные заголовки не находит. Где их искать и как не находит, если до этого gtk приложения у меня нормально компилировались.

В общем, я думаю, что надо мне поменять компилятор. Помогите разобраться, сам я только начинаю осваивать линукс и программирование под него пока темный лес. Просветите.


попробуй откомпилировать эту программу gcc3 вместо gcc2.96 для этого надо найти в Makefile строчку вроде CC=gcc и заменить gcc на gcc3

правильный способ смены компилятора -- обновление соответствующего пакета в твоем дистрибутиве. собирать gcc самому нет смысла, если ты в этом мало что понимаешь.

заголовки не находятся когда пытаешься скомпилировать вручную скорее всего потому что ты не говоришь компилятору где их искать. когда компилятор запускается из make эти параметры ему указываются.

успехов.

anonymous
()
Ответ на: комментарий от anonymous

 Не помогает gcc3 вместо gcc. Действительно, заголовки не 
находятся, поскольку их надо указать. Это я понял. Но в чем 
причина не создания hdr.o так и не понял.

 Если посмотреть, то команда которой при сборке компилируется 
hdr.c следующая

gcc -DHAVE_CONFIG_H -I. -I. -I../../lib -I/usr/include/gtk-1.2 -I/usr/include/glib-1.2 -I/usr/lib/glib/include -I/usr/X11R6/include  -I../.. -I/usr/local/include    -g -O2 -Wall -MT hdr.o -MD -MP -MF ".deps/hdr.Tpo"   -c -o hdr.o hdr.c

 Результат следующий:

In file included from ../../app/cms.h:23,
                 from ../../app/gimage.h:22,
                 from ../../app/gdisplay.h:21,
                 from ../../app/image_render.h:21,
                 from hdr.c:39:
/usr/local/include/lcms.h:147: redefinition of `BYTE'
fromrad.h:30: `BYTE' previously declared here
hdr.c: In function `save_image':
hdr.c:409: warning: `data' might be used uninitialized in this function
hdr.c: At top level:
fromrad.h:31: warning: `g_bval' defined but not used


 И hdr.o не создается. 

Я так понимаю, что предупреждения в строчках hdr.c:409 и fromrad.h:31 не могли привести к отсутствию hdr.o

 В lcms.h:147  
typedef unsigned char BYTE, *LPBYTE;

 В fromrad.h:30,31,31,32
typedef unsigned char  BYTE; 	/* 8-bit unsigned integer */
static BYTE   (*g_bval)[256] = NULL;

typedef BYTE  COLR[4];		/* red, green, blue, exponent */



 Может быть из-за этого конфликта не компилируется? Как исправить тогда? Или в чем еще может быть причина?

m_m
() автор топика
Ответ на: комментарий от m_m

что-то больше ничего не соображу сейчас.

имеет смысл написать в список рассылки разработчикам. обязательно со всеми подробностями и сообщениями make

anonymous
()
Ответ на: комментарий от anonymous

> попробуй откомпилировать эту программу gcc3 вместо gcc2.96 для этого надо найти в Makefile строчку вроде CC=gcc и заменить gcc на gcc3

проще сделать CC=gcc3 ./configure

Novel ★★★★
()
Ответ на: комментарий от anonymous

> что-то больше ничего не соображу сейчас.

В состав rpm - ки с cinepaint не входит lcms, ее я скачивал отдельно и с другого сайта. Скачивал самую новую версию. Может ли быть, что здесь-то несовместимость и проявилась?

m_m
() автор топика
Ответ на: комментарий от Novel

> проще сделать CC=gcc3 ./configure

Да я уже и так делал и просто вручную, с нужными опциями, пытался компилировать - все равно не помогает. Я еще вот что не пойму: обычно, если имеется какая-нибудь ошибка при компиляции, то gcc так и пишет "error", а здесь такого слова не написано, а просто сообщение о повторном определении типа BYTE.

m_m
() автор топика
Ответ на: комментарий от anonymous

Предыдущее сообщение мое - забыл подписаться.

m_m
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.