2013-01-09 2 views
1

프로그램이 시작될 때 (예 : 프로그램에서 코드 줄을 실행하지 않음) 세그먼트 화 오류가 발생할 수 있지만로드 중일 수 있습니다.실행시 분할 오류 - C?

나는

OBJS = one.o two.o 
prog: prog.o $(OBJS) libtreader.so 
    ${CC} -o [email protected] ${CFLAGS} ${EXTRACFLAGS} -L. -lssl -ltreader prog.o $(OBJS) -shared 

내가 쉘 스크립트에서 첫 번째 문이의 printf 문을 인 선언 후

path/prog 

을 프로그램을 실행하고 다음 메이크에게 있습니다. 인쇄하는 유일한 이유는 다음과 같습니다. 세그먼트 오류

그래서 인쇄 중에 문제가 있거나 프로그램을로드 할 때 문제가있을 수 있습니다. 어떤 충고도 정말 감사합니다.

편집 : 이

int main(int argc, char *argv[]) 
{ 
int err; 
struct parse_params params; 
int c; 
int index; 

    printf("SSSSS\n"); 

EDIT2 주요 방법입니다 : 내가 여기에 올바른 파일에서 찾고 : prog.c가 있습니까? 또는 main 메소드가 다른 파일에있을 수 있습니까?

+0

'printf()'에 대한 호출을 추가하십시오. 거기에 포인터에 대한 잘못된 가정이있는 것 같습니다. –

+0

아마 버퍼링 때문에'printf' 출력이 보이지 않을 것입니다. 'printf' 다음에'fflush (stdout);'가 표시됩니까? –

+0

디버거에서 먼저 실행 해보세요. 어디에 넣었는지 확인하십시오 –

답변

1

gcc에 대한 -shared 인수를 제거하십시오. 공유 라이브러리를 만드는 것입니다 (실행 파일이기도하지만 실행하려고하면 충돌이 발생합니다).

+0

질문 : 공유 라이브러리, 기본적으로 다른 라이브러리를 사용하는 경우 컴파일되지 않습니다. 그렇다면 공유 라이브러리를 사용하지 않고 다른 공유 라이브러리를 컴파일하려면 어떻게해야합니까? – user1253073

+0

잘 모르겠습니다. 오류가 발생하면 알려주십시오. 현재 makefile이 공유 라이브러리를 생성하는데, 이는 틀린 것입니다. '-shared' 플래그를 제거 할 때 할 수있는 일반 실행 파일을 만들어야합니다. 다른 방법으로 오류가 발생하면 다른 문제이므로 오류에 대해 자세히 설명해야합니다. – nos

+0

그래, 몇 가지 중요한 문제가 있지만 그들을 해결할 수 있습니다. 원래의 질문에 대한 대답은 근본적으로 왜 내가 추측하는 것이 합당한지를 설명합니다. 그것의 공유 라이브러리와 나는 그것을 실행하지 못할 것 같아요. 다시 한번 감사드립니다. – user1253073