(2) 아무 에러 메시지도 안 나온다는 게 "에러 메시지"도 안 나온다는 건가요? 실행파일이 없으면 최소한 gdb처럼 not found라는 메시지라도 나올 텐데요.
(실행파일명) ; echo $?라고 쳐보시고 뭔가 숫자가 나오면 프로그램이 실행이 된 것입니다. 다만 화면에 아무것도 출력 안하고 그냥 종료된 거죠.
===> ls라는 명령어를 수행하고 나서 리턴값을 확인해보면 0이 나옵니다.
===> 보통 아무런 메세지가 없으면 에러가 없는거고
===> 리턴 0은 정상적으로 종료됐다는걸 표시해줍니다.
$ ls none_directory
ls: none_directory에 접근할 수 없습니다.: 그런 파일이나 디렉터리가 없습니다
$ echo $?
2
===> 존재하지 않는 디렉토리에 대해서 ls명령어를 수행하면
===> 에러 메세지를 출력해주고 리턴값은 2입니다.
===> /usr/include/asm-generic/errno-base.h에 보시면 2는 No such file or directory를 나타냅니다.
(일반론이고 사실 리턴값은 프로그래머 마음입니다.)
$ ps -ef | grep ls
ihavnoth 7445 7415 0 01:41 pts/6 00:00:00 grep --color=auto ls
===> ps 유틸은 $ man ps에 나온대로
===> ps - report a snapshot of the current processes.
===> 현재 프로세스의 스냅샷을 보여줍니다.
===> 이미 종료된 프로세스가 아니라 현재의 프로세스입니다.
===> aa라는 프로그램을 실행한 후 종료된 상태라면 ps에서 나타나지 않습니다.
실행하는 순간을 잡고 싶으시면 터미널을 하나 더 여셔서 ps를 무한 루프 돌려놓고 다른 터미널에서 XXXX 프로그램을 실행하면 확인할 수 있습니다.
$ while(true); do ps -ef | grep XXXX | grep -v grep; done
뜨는 오류 메시지라도 올려주셔야 ㅇㅅㅇ
어떻게 대처할지 답안이 나오겠죠?
오류메시지가 있었다면..당연히 올려드렸지요..ㅠ.ㅠ
컴파일 오류도 없고.. 실행시 오류메시지도 전혀 없기 때문에 알수가 없습니다...
무엇을 봐야 할까요..?ㅠㅠ..
일단 gdb로 실행
gdb [실행파일]
...
(gdb) r (r = 실행)
해서 뭐가 나오는지 한번 보세요.
정상적으로 실행/종료되었다면 끝에 다음과 같은 메시지가 나와야 합니다.
Program exited normally.
gdb가 없다고 나오는데요..ㅠ.ㅠ..
gdb: not found.
이런메시지가 출력됩니다.. ㅠ.ㅠ..
...
(1) 패키지 관리자를 열어서 gdb를 설치하세요.
(2) 아무 에러 메시지도 안 나온다는 게 "에러 메시지"도 안 나온다는 건가요? 실행파일이 없으면 최소한 gdb처럼 not found라는 메시지라도 나올 텐데요.
(실행파일명) ; echo $?라고 쳐보시고 뭔가 숫자가 나오면 프로그램이 실행이 된 것입니다. 다만 화면에 아무것도 출력 안하고 그냥 종료된 거죠.
1. 환경, 운영체제 - 리눅스? 맥OS?
1. 환경, 운영체제 - 리눅스? 맥OS? 윈도우즈?
2. 언어 - C? C++? Python? Java????
3. 컴파일 옵션?
이런것 정도는 얘기를 해주셔야 의미있는 답이 나올겁니다.
"컴파일했는데 실행이 안돼요"라고 물어보시면 누구한테 물어봐도 대답은 "그러게요..." 밖에 안나와요.
피할 수 있을때 즐겨라! http://melotopia.net/b
설명이 부족해서 죄송합니다.
제가 이쪽을 워낙 몰라서 어떤식으로 질문을 드려야 할지 몰랐습니다.
그래서 저렇게 막연하게 질문을 할수 밖에 없었구요...
일단 운영체제는 UNIX이고..언어는 C(pro c)입니다.
컴파일러는 cc이고..
컴파일 옵션이라 하믄 어떤건지 잘은 모르겠지만..
make 파일에
cc -c -w -X -I/src/inc aa.c
cc -o aa aa.o
머 이런식으로 되어있습니다.
다른 여러 파일들과 똑같은 make파일로 컴파일했고..
다른 파일들은 모두 실행이 됩니다.
ps -ef | grep ~~이렇게 해서 검색을 해보면..
다른 파일들은 프로세스 상에 모두 떠있는데 저 aa라는 녀석만 안떠 있습니다..ㅠ.ㅠ..
부족한 설명에도 답해주셔서 감사합니다..
너무 몰라서 어떤식으로 설명을 해야할지도 막막했던것 같습니다..
보시고 조언 부탁드립니다...(ㅜㅜ)
jick님 말씀대로 프로그램이 실행되고, 모든 일을
jick님 말씀대로 프로그램이 실행되고, 모든 일을 끝낸 후 종료된 것일 수 있습니다.
main()에서 return 부분 바로 앞에 실행을 멈추는 코드나, printf처럼 뭔가를 출력시키는 부분을 넣고 실행시켜보세요.
피할 수 있을때 즐겨라! http://melotopia.net/b
simple test
$ mkdir test
$ cd test
$ ls
$ echo $?
0
===> ls라는 명령어를 수행하고 나서 리턴값을 확인해보면 0이 나옵니다.
===> 보통 아무런 메세지가 없으면 에러가 없는거고
===> 리턴 0은 정상적으로 종료됐다는걸 표시해줍니다.
$ ls none_directory
ls: none_directory에 접근할 수 없습니다.: 그런 파일이나 디렉터리가 없습니다
$ echo $?
2
===> 존재하지 않는 디렉토리에 대해서 ls명령어를 수행하면
===> 에러 메세지를 출력해주고 리턴값은 2입니다.
===> /usr/include/asm-generic/errno-base.h에 보시면 2는 No such file or directory를 나타냅니다.
(일반론이고 사실 리턴값은 프로그래머 마음입니다.)
$ ps -ef | grep ls
ihavnoth 7445 7415 0 01:41 pts/6 00:00:00 grep --color=auto ls
===> ps 유틸은 $ man ps에 나온대로
===> ps - report a snapshot of the current processes.
===> 현재 프로세스의 스냅샷을 보여줍니다.
===> 이미 종료된 프로세스가 아니라 현재의 프로세스입니다.
===> aa라는 프로그램을 실행한 후 종료된 상태라면 ps에서 나타나지 않습니다.
실행하는 순간을 잡고 싶으시면 터미널을 하나 더 여셔서 ps를 무한 루프 돌려놓고 다른 터미널에서 XXXX 프로그램을 실행하면 확인할 수 있습니다.
$ while(true); do ps -ef | grep XXXX | grep -v grep; done
없음
x86계열에서는 한번도 경험해보지 못했지만 ARM
x86계열에서는 한번도 경험해보지 못했지만
ARM 계열에서는 가끔씩 동일한 현상이 있었어여^^;;
컴파일시 다음옵션 추가해 보세여~
CFLAGS=--static LDFLAGS=--static
댓글 달기