1

我需要在我的 C 程序中使用erl_interface 。Debian Wheezy 上有 Erlang R15B01。

我只是执行以下操作(例如)。

// main.c
#include <ei.h>
#include <erl_interface.h>

int main() {
    erl_init(NULL,0);
    return 0;
}

然后我说:

cc -I/usr/lib/erlang/lib/erl_interface-3.7.7/include -L/usr/lib/erlang/lib/erl_interface-3.7.7/ -lei -lerl_interface -o prog main.c

指定为 -L 的目录包含libei.aliberl_interface.a链接器滥用对 erl_init 的引用是未定义的:undefined reference to erl_init

可能有什么问题?抱歉问了一个非常愚蠢的问题。

4

1 回答 1

2

最新版本的 GNU 工具链要求以相同的顺序指定目标文件和库,它们的符号相互依赖。因此,您通常应该将库标志放在调用的末尾,如下所示:

gcc -o prog main.c -L<libdir> -I<includedir> -lerl_interface -lei
于 2013-01-06T20:45:36.487 回答