编程语言GAP有一种使用编译器GAC编译成 C 代码的方法。
我正在尝试通过以下方式对此进行测试,以从用 GAP 编写的函数创建 C 程序:
第一个.g
PrintEO := function() Print("Hello World"); end;
第一个GapProg.c
#include <stdio.h>
int main()
{
PrintEO();
return 0;
}
然后我在 Bash 中运行
$ gac -c first.g
$ ar -cvq libfirstgap.a first.o
$ cc -o gapFirstTest firstGapProg.c libfirstgap.a
这会将 .g 文件编译为 .o,创建库,然后尝试链接该库并使其可执行。当我这样做时,我得到了错误gapProg.c:(.text+0xa): undefined reference to ``G_PrintEO'
。
我猜这是因为我在 firstGapProg.c 中没有该函数的模板。但是我实际上不知道如何调用函数本身或它在库中保存的内容?!
当我$nm libfirstgap.a
得到输出时:
test.o:
U AssGVar
U ChangedBags
U CurrLVars
U CurrStat
0000000000000000 b DefaultName
0000000000000070 b GF_Print
0000000000000078 b G_Print
0000000000000068 b G_PrintEO
U GVarName
0000000000000070 t HdlrFunc1
0000000000000340 t HdlrFunc2
U InitFopyGVar
U InitGlobalBag
U InitHandlerFunc
0000000000000480 t InitKernel
0000000000000200 t InitLibrary
00000000000004f0 T Init__test
0000000000000000 d module
0000000000000050 b NameFunc
0000000000000030 b NamsFunc
0000000000000010 b NargFunc
U NewBag
U NewFunction
U NEW_STRING
0000000000000000 t PostRestore
U PtrBody
U PtrLVars
U UpdateCopyFopyInfo
U YoungBags
有任何想法吗?