Здравствуйте всем! Я много лет пользовался Альтлинуксом вместе с пакетом научной ЦЕРНовской графики ROOT (http://root.cern.ch), но начиная с Desktop 4.0 пакет ROOT перестал компилиться. Я сначала думал, что дело в версии компилятора (т.е. gcc-4.1), так как официально ROOT поддерживает только до gcc-3.4. Но потом в сети нашел откомпилированную gcc-4.1 версию (ftp://root.cern.ch/root/root_v5.12.00.linux-gcc-4.1.tar.gz). Дальше я установил у себя линукс Ubuntu-7.10, где тоже основной компилятор gcc-4.1, и проверил сам - ROOT компилится с gcc-4.1 без проблем! Значит, проблема в реализации компилятора Альтлинукса. Я уж подумал было, буду работать в Ubuntu. Но там оказалась очень кривая русификация; emacs, без которого жить не могу, тоже совсем кривой. Надо разбираться с Альтлинуксом, иначе жизни нет. Вот что происходит при компиляции ROOT'a в Desktop 4.0 (это для версии ROOT 5.18). Первая ошибка такая: cint/src/g__cfunc.c:50: ошибка: expected declaration specifiers or '...' before numeric constant cint/src/g__cfunc.c:50: ошибка: expected ')' before '!=' token cint/src/g__cfunc.c:50: ошибка: expected ')' before '?' token Соответствющий фрагмент кода из файла g__cfunc.c такой: 48 #if defined(G__ANSI) || defined(G__ANSIHEADER) 49 int memcmp(const void *region1,const void *region2,size_t count); 50 void* memcpy(void *region1,const void *region2,size_t n); 51 #elif defined(_AIX) Здесь все ясно. В gcc-4.1 Альтлинукса определен лишний макрос 'memcpy', который пытается раскрыться где не надо. Вставляю перед этим фрагментом строчку: #undef memcpy // ERROR CORRECTION и компиляция продолжается дальше. До следующего сообщения об ошибке: g++ -m32 -O2 -o bin/cint cint/main/cppmain.o \ -Llib -lCint -lm -ldl -rdynamic lib/libCint.so: undefined reference to `dlsym' lib/libCint.so: undefined reference to `dlerror' lib/libCint.so: undefined reference to `dlopen' lib/libCint.so: undefined reference to `dlclose' collect2: выполнение ld завершилось с кодом возврата 1 Это уже хуже. Не извелекаются функции из библиотеки libltdl, хотя сама библиотека присутствует в /usr/lib (файлы libltdl.a, libltdl.so, libltdl.so.3, libltdl.so.3.1.4) Дело точно не в том, что библиотека не находится. Я прогнал такой тестовый пример с командной строкой g++ -m32 -O2 -rdynamic -lltdl Test.c: // Test.c #include int main() { dlopen("Test", 0); dlerror(); return 0; } и получил сообщения об ошибках: In function `main': Test.c:(.text+0x25): undefined reference to `dlopen' Test.c:(.text+0x2a): undefined reference to `dlerror' Т.е. функции библиотеки не грузятся, хотя библиотека есть. Почему? Я бы снова установил Altlinux Compact 3.0, где все отлично компилится, но не устанвливается он на мой ноутбук! Что делать? Заранее благодарен, Александр.