要将hello.spl
翻译为C,我运行./spl2c <hello.spl> hello.c
,效果很好。
接下来我运行gcc hello.c
,但我收到此错误:
fatal error: spl.h: No such file or directory
。
spl.h
和hello.c
位于同一目录中。我尝试将hello.c
中的include语句从#include <spl.h>
更改为#include "spl.h"
,但在运行gcc hello.c
时出现了几个错误,例如:
undefined reference to 'global_initialize'
undefined reference to 'initialize_character'
有谁能告诉我发生了什么事?
答案 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