莎士比亚编程语言 - 编译时出错

时间:2013-08-06 19:30:51

标签: gcc compiler-construction shakespeare-lang

要将hello.spl翻译为C,我运行./spl2c <hello.spl> hello.c,效果很好。

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

  

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

spl.hhello.c位于同一目录中。我尝试将hello.c中的include语句从#include <spl.h>更改为#include "spl.h",但在运行gcc hello.c时出现了几个错误,例如:

  

undefined reference to 'global_initialize'

     

undefined reference to 'initialize_character'

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

1 个答案:

答案 0 :(得分: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