我需要在我的 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.a
和 liberl_interface.a
但链接器滥用对 erl_init 的引用是未定义的:undefined reference to erl_init
可能出了什么问题?很抱歉提出非常愚蠢的问题。
最佳答案
最新版本的 GNU 工具链要求目标文件和库的指定顺序与它们的符号相互依赖的顺序相同。因此,您通常应该将库标志放在调用的末尾,如下所示:
gcc -o prog main.c -L<libdir> -I<includedir> -lerl_interface -lei
关于c - erl_interface 链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14185290/