LINUX.ORG.RU

Segmentation fault...


0

0

Hello All !

Пытаюсь откомпилировать простейший код с вызовом функции из lib'а. Компиляция и линкинг проходят без ошибок,но при запуске появляется сообщение "Segmentation fault(core dumped)"

Я так понимаю прога не находит lib'а во время запуска,но почему в упор не понимаю.

Помогите,плз второй день сижу...

Вот makefile и исходник

/*Makefile */

DIALOGIC_DIR = /usr/dialogic DIALOGIC_INCLUDE = $(DIALOGIC_DIR)/inc/ DIALOGIC_LIB = $(DIALOGIC_DIR)/lib

INCLUDE_PATH = -I$(DIALOGIC_INCLUDE)

LIB_PATH = -lqhost -L$(DIALOGIC_LIB)

main: main.o gcc -o main main.o $(LIB_PATH) -Wl,--rpath -Wl,$(DIALOGIC_LIB)

main.o: main.c gcc -c main.c $(INCLUDE_PATH) -g3

/* Source code */

#include <qstream.h> #include <stdio.h>

int main(){

void *pInfo = NULL; QHandle GStreamHandle;

GStreamHandle = qGStreamOpen(pInfo); //From lib

printf("\nGStreamHandle = %d",GStreamHandle);

return 0;

}

Re: Segmentation fault...

Скорее прога просто SIGSEGV ловит и дохнет. Как на счет выделения памяти для pInfo ?

Teplov ()

Re: Segmentation fault...

Попробовал - не помогло. Да и функция должна получать (void*)...

LinuxMan ()

Re: Segmentation fault...

Ну а что скажет после выпадения в осадок 
gdb -c core <имя-бинарника>
info stack

Antichrist ()

Re: Segmentation fault...

Bыдал такое : ************************************************************ GNU gdb 5.0rh-5 Red Hat Linux 7.1 Copyright 2001 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-redhat-linux"... Core was generated by `./main'. Program terminated with signal 11, Segmentation fault. Reading symbols from /usr/dialogic/lib/libqhost.so...done. Loaded symbols for /usr/dialogic/lib/libqhost.so Reading symbols from /lib/i686/libc.so.6...done. Loaded symbols for /lib/i686/libc.so.6 Reading symbols from /lib/i686/libpthread.so.0...done. warning: Unable to set global thread event mask: generic error [New Thread 1024 (LWP 2065)] Error while reading shared library symbols: Cannot enable thread event reporting for Thread 1024 (LWP 2065): generic error Reading symbols from /lib/libdl.so.2...done. Loaded symbols for /lib/libdl.so.2 Reading symbols from /lib/ld-linux.so.2...done. Loaded symbols for /lib/ld-linux.so.2 #0 __strtol_internal (nptr=0x0, endptr=0xbffff90c, base=-1073743704, group=134513985) at eval.c:36 36 eval.c: No such file or directory. in eval.c ************************************************** Насколько я понял проблема не в lib'е ?

LinuxMan ()

Re: Segmentation fault... info stack

(gdb) info stack #0 __strtol_internal (nptr=0x0, endptr=0xbffff90c, base=-1073743704, group=134513985) at eval.c:36 #1 0x4002d16b in qGStreamOpen () at eval.c:41 #2 0x08048578 in main () at main.c:24 #3 0x4005a177 in __libc_start_main (main=0x8048560 <main>, argc=1, ubp_av=0xbffff90c, init=0x80483d0 <_init>, fini=0x80485e0 <_fini>, rtld_fini=0x4000e184 <_dl_fini>, stack_end=0xbffff8fc) at ../sysdeps/generic/libc-start.c:129

LinuxMan ()

Re: Segmentation fault...

Опаньки! Да как же ты линкуешь?!? Надо просто gcc -o main main.o -Lpath-to-lib -llibname

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