在C程序中使用GAP中的函数

时间:2014-02-14 12:38:30

标签: c linux bash

编程语言GAP有一种使用编译器GAC编译成C代码的方法。

我试图通过以下方式测试这个,用GAP编写的函数创建一个C程序:

first.g

PrintEO := function() Print("Hello World"); end;

firstGapProg.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

有什么想法吗?

0 个答案:

没有答案