On Mon, Apr 17, 2006 at 12:24:57AM +0400, QA Team Robot wrote: > i586-alt-linux-g++ -pipe -Wall -O2 -march=i586 -mtune=pentium4 -pipe -Wall -O2 -march=i586 -mtune=pentium4 -O2 -DNDEBUG -Wall -Woverloaded-virtual -fno-rtti -fno-exceptions -fpic -DUNSTABLE -pipe -Iinclude -ldl -shared -Wl,-hlibxplc-0.3.so -Wl,-z,defs,--version-script=config/exports.map xplc/category.o xplc/catiter.o xplc/catmgr.o xplc/loader.o xplc/moduleloader.o xplc/modulemgr.o xplc/monikers.o xplc/new.o xplc/servmgr.o xplc/statichandler.o libxplc-cxx.so -o libxplc.so > xplc/loader.o: In function `loaderOpen(char const*, void**)':loader.cpp:(.text+0x16): undefined reference to `dlerror' > :loader.cpp:(.text+0x29): undefined reference to `dlopen' > :loader.cpp:(.text+0x40): undefined reference to `dlerror' > xplc/loader.o: In function `loaderSymbol(void*, char const*, void**)':loader.cpp:(.text+0x63): undefined reference to `dlerror' > :loader.cpp:(.text+0x75): undefined reference to `dlsym' > :loader.cpp:(.text+0x7f): undefined reference to `dlerror' > xplc/loader.o: In function `loaderClose(void*&)':loader.cpp:(.text+0xa6): undefined reference to `dlclose' > collect2: ld returned 1 exit status > make: *** [libxplc.so] Error 1 > make: Leaving directory `/usr/src/RPM/BUILD/xplc-0.3.12' Глюк компилятора. Происходит примерно вот что (в упрощенном виде). $ g++ -ldl -shared -Wl,-hlibxplc-0.3.so -Wl,--version-script=config/exports.map xplc/category.o xplc/catiter.o xplc/catmgr.o xplc/loader.o xplc/moduleloader.o xplc/modulemgr.o xplc/monikers.o xplc/new.o xplc/servmgr.o xplc/statichandler.o libxplc-cxx.so -o libxplc.so -Wl,-z,defs xplc/loader.o: In function `loaderOpen(char const*, void**)':loader.cpp:(.text+0x1a): undefined reference to `dlerror' :loader.cpp:(.text+0x2d): undefined reference to `dlopen' :loader.cpp:(.text+0x45): undefined reference to `dlerror' xplc/loader.o: In function `loaderSymbol(void*, char const*, void**)':loader.cpp:(.text+0x73): undefined reference to `dlerror' :loader.cpp:(.text+0x85): undefined reference to `dlsym' :loader.cpp:(.text+0x8f): undefined reference to `dlerror' xplc/loader.o: In function `loaderClose(void*&)':loader.cpp:(.text+0xc0): undefined reference to `dlclose' collect2: ld returned 1 exit status $ То есть я даю ему -ldl, но он в упор не видит dlopen. Теперь я переставляю -ldl с первого места на последнее: $ g++ -shared -Wl,-hlibxplc-0.3.so -Wl,--version-script=config/exports.map xplc/category.o xplc/catiter.o xplc/catmgr.o xplc/loader.o xplc/moduleloader.o xplc/modulemgr.o xplc/monikers.o xplc/new.o xplc/servmgr.o xplc/statichandler.o libxplc-cxx.so -o libxplc.so -Wl,-z,defs -ldl $ Получилось! Документирован ли порядок аргументов у gcc?