c - erl_interface 链接器错误

标签 c gcc erlang erl-interface

我需要在我的 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

可能出了什么问题?很抱歉提出非常愚蠢的问题。

最佳答案

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

gcc -o prog main.c -L<libdir> -I<includedir> -lerl_interface -lei

关于c - erl_interface 链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14185290/

相关文章:

c - gcc 预处理器 typedef 名称替换

Erlang 发布 Rebar : What am I missing?

types - Erlang 头文件 (.hrl) 中应该和不应该有什么?

c - 使用 MPI 进行双调排序

c - 在 C 中使用 C++ 可能性

c - 让 GDB 列出程序中的所有函数

c - 与信号量的合并实现

macos - Mac OS X 上的 gcc : how to link libraries installed with MacPorts?

c - GCC 5.1 循环展开

erlang - 如何在 Erlang gen_server 中使用handle_cast和handle_call?