2012-03-01 2 views
0

here이라는 C 프로그램을 실행하려고합니다. 하지만 내가 일식에서 빌드하려고하면 암시 적으로 선언 된 함수와 존재하지 않는 액세스중인 레지스터에 대한 수많은 오류가 발생합니다. 아무도이 코드를 실행하고 그들이 일식 (프로그램, OS 등)에있어 어떻게되는지 궁금 해서요.이 코드를 실행하고 실행하기 위해 이클립스와 gcc가있는 우분투 가상 머신을 사용하는 Windows 머신입니다. 여기 C 프로그램을 빌드 할 수 없습니다.

(나는 원래 코드에서 몇 가지 버그를 해결했습니다) 이클립스 SDK에서 오류의 목록입니다

**** Build of configuration Debug for project nearpi **** 

make all 
Building file: ../src/nearpi.c 
Invoking: GCC C Compiler 
gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/nearpi.d" -MT"src/nearpi.d" -o "src/nearpi.o" "../src/nearpi.c" 
../src/nearpi.c:465:1: warning: return type defaults to ‘int’ [-Wreturn-type] 
../src/nearpi.c: In function ‘main’: 
../src/nearpi.c:501:5: warning: implicit declaration of function ‘input’ [-Wimplicit-function-declaration] 
../src/nearpi.c:532:9: warning: implicit declaration of function ‘nearPiOver2’ [-Wimplicit-function-declaration] 
../src/nearpi.c:540:9: warning: implicit declaration of function ‘dbleCF’ [-Wimplicit-function-declaration] 
../src/nearpi.c: At top level: 
../src/nearpi.c:590:1: warning: return type defaults to ‘int’ [-Wreturn-type] 
../src/nearpi.c:694:1: warning: return type defaults to ‘int’ [-Wreturn-type] 
../src/nearpi.c:756:1: warning: return type defaults to ‘int’ [-Wreturn-type] 
../src/nearpi.c: In function ‘nearPiOver2’: 
Finished building: ../src/nearpi.c 
../src/nearpi.c:935:1: warning: control reaches end of non-void function [-Wreturn-type] 

../src/nearpi.c: In function ‘input’: 
../src/nearpi.c:748:1: warning: control reaches end of non-void function [-Wreturn-type] 
Building target: nearpi 
../src/nearpi.c: In function ‘main’: 
Invoking: GCC C Linker 
gcc -o "nearpi" ./src/nearpi.o -lm 
../src/nearpi.c:564:1: warning: control reaches end of non-void function [-Wreturn-type] 

완료 건물 대상 : nearpi

+0

here을 찾을 수 있습니다. – thegrinner

+1

헤더 파일이 누락되었습니다. –

+0

더 많은 의견이 필요하다고 생각합니다. 그러나 진지하게, 컴파일러를 호출 한 정확한 오류와 방식을 게시해야합니다. – 111111

답변

5

그 코드는 버그를 가지고 때 현대 컴파일러 [*]에서 컴파일됩니다. 내가 너라면, 누구에게나 연락해서 돈을 돌려 달라.

는 버그의 일부은 다음과 같습니다

  • #include <math.h>
  • 그것은 inccorrectly register 키워드를 사용, #include <stdio.h>가 없습니다. 키워드가 나타나는 모든 곳에서 해당 키워드를 삭제하십시오.
  • "% lE"을 (를) 사용해야하는 경우 "% E"를 사용합니다.
  • "% 08lx"를 사용해야 할 때 "% 08x"를 사용합니다.
  • "1.0"을 사용해야 할 때 "1.0E"를 사용합니다.

모든 버그를 수정하면 실행됩니다. 나는 그것이 정확한 대답을 생산하는지 모르지만 그것은 달린다. C에 대한 일반적인 표준 R.는 C 세 가지 국제 표준은 그 이후가 발표 된 K &의 첫 번째 버전이 때

* 그 코드는 1983 년에 작성되었고, 그 코드가 업데이트되지 않았습니다. 대부분의 버그와 경고는 매우 오래된 결과입니다.

+0

정답은 무엇인지 알고 있습니다. 출력 형식이 어떤 형식인지는 모르겠지만 결과를 볼 때 올바른지 알 수 있습니다. – Veridian

+0

함수 선언을 수정하는 방법은 무엇입니까? – Veridian

1

는 당신은이 컴파일러 옵션에 '-lm'추가하여 수학 라이브러리를 추가 할 필요가 나타냅니다

undefined reference to `floor' 

처럼 (질문의 현재 버전에서) 오류를 연결에 직면 해있다. 당신이 도움이 될 특정 오류를 게시 할 수 있다면

또한 설명 당신은

+0

-lm 옵션에 대해 알고 있었지만, 이클립스에서 제대로 작동하는 방법을 알아 냈으므로 불평하지 않습니다. – Veridian

관련 문제