Hello All! Я вот наткнулся на странную проблему, может быть, кто-нибудь знает, в чем дело... Итак: 1) есть исходник shared library с инициализатором _init: -------- mydll.c ----------------------------------- #include <dlfcn.h> static void *myhandle; void _init() { myhandle = dlopen("/lib/libc.so.6", RTLD_LAZY); } ---------------------------------------------------- компилируется так: gcc -Wall mydll.c -nostdlib -shared -o libmydll.so -ldl 2) есть программулина, которая грузит эту lybmydll.so: -------- test.c ------------------------------------ #include <dlfcn.h> #include <stdio.h> int main() { char libname[] = "libmydll.so"; void *lib = dlopen(libname, RTLD_LAZY); if(!lib) { printf("Cannot open library: %s\n", dlerror()); return 1; } printf("OK!\n"); return 0; } ---------------------------------------------------- Компилируем программулину так: gcc -g -c test.c -o test.o gcc -g -o test test.o -ldl Запускаем: bash$ export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH bash$ ./test OK! Все работает. А вот теперь внимание - компилируем по-другому: gcc -g -c test.c -o test.o gcc -g -o test test.o -static -lc -ldl Запускаем: bash$ export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH bash$ ./test Segmentation fault Таким образом, при вызове dlopen из инициализатора все работает, если екзешник собран динамическим, а если статически - все падает... Без вызова dlopen опять-таки все в порядке. Крэш происходит в динамическом загрузчике (/lib/ld-2.3.2.so). Где - непонятно, собирать и инсталлить все хозяйство с отладкой слишком опасно :( В чем может быть дело? Заранее спасибо!
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Accessing a corrupted shared library (2013)
- Форум GDB в Eclipse не делает StepOver через dlopen (2018)
- Форум функция main() в библиотеке (2010)
- Форум помогите начинающему ! (2006)
- Форум Вызов функции из библиотеки, определённой в исполняемом файле. (2013)
- Форум C++, dlopen, Модули, Segmentation fault (2019)
- Форум [C] [линковка] про плагины (2009)
- Форум Сохранить состояние в crt между вызовами dlopen/dlclose, не изменяя main-программу (2012)
- Форум UB или нет? (2020)
- Форум Так всётаки как написать so'шку??? (2005)