1

为了翻译hello.spl成 C,我运行./spl2c <hello.spl> hello.c它工作正常。

接下来我运行gcc hello.c,但我收到此错误:

fatal error: spl.h: No such file or directory.

spl.h并且hello.c在同一个目录中。我试图将 include 语句hello.c#include <spl.h>to更改为#include "spl.h",但是在运行时出现了几个错误,gcc hello.c例如:

undefined reference to 'global_initialize'

undefined reference to 'initialize_character'

谁能告诉我发生了什么事?

4

1 回答 1

2

函数 global_initilize、initialize_character 已声明但未在 hello.c 中定义。我认为您的程序 hello.c 取决于您的编译命令中未包含的库(“spl”库?)。

您应该具备以下条件之一:

gcc hello.c whatever_file_who_define_undefined_function.c
gcc hello.c -lwhatever_lib_that_define_undefined_function.so

编辑 :

http://shakespearelang.sourceforge.net/report/shakespeare/#SECTION00070000000000000000 您需要包含 libspl.a 库才能使其工作

所以你的编译选项应该如下:

gcc hello.c -Ipath/to/spl/include/ -Lpath/to/spl/library -llibspl.a
  • -I指定 spl.h 文件所在位置的选项
  • -L指定 libspl.a 所在位置的选项
  • -l指定使用哪个库的选项

或(*.a 是静态库,因此可以像目标文件一样处理)

gcc hello.c -Ipath/to/spl/include/ path/to/spl/library/libspl.a
于 2013-08-09T01:00:59.040 回答