无法获得C程序构建

时间:2012-03-01 19:14:43

标签: c eclipse compilation

我正在尝试执行找到here的c程序。但是当我尝试在eclipse中构建它时,我会收到许多关于隐式声明的函数和不存在的访问寄存器的错误。我想知道是否有人能够运行这些代码以及它们如何运行(程序,操作系统等)我在使用带有eclipse和gcc的ubuntu虚拟机的Windows机器上尝试执行此代码。

以下是Eclipse 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]

完成建筑目标:近乎

2 个答案:

答案 0 :(得分:5)

当在现代编译器[*]上编译时,该代码中存在错误。如果我是你,我会联系任何获得许可的人,并要求退还我的钱。

一些的错误是:

  • 缺少#include <stdio.h>#include <math.h>
  • 它不正确地使用register关键字。在任何地方删除该关键字。
  • 当它应该使用“%lE”时使用“%E”。
  • 当它应该使用“%08lx”时使用“%08x”。
  • 当它应该使用“1.0”时使用“1.0E”。

如果您修复了所有这些错误,它就会运行。我不知道它是否能产生正确答案,但它确实会运行。

* 该代码写于1983年,当时C的主流标准是K&amp; R的第一版。从那时起,已经出版了三个C国际标准,该代码从未更新过。大多数错误和警告都是因为年纪大了。

答案 1 :(得分:1)

您只面临链接错误(在当前版本的问题中),例如

undefined reference to `floor' 

这表明您需要通过在编译器选项中添加“-lm”来添加数学库。

您找到here

的进一步说明