1

编程语言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

有任何想法吗?

4

0 回答 0