【问题标题】:C interface to ErlangErlang 的 C 接口
【发布时间】:2011-12-09 03:13:40
【问题描述】:

当我用下一个命令编译 C 和 erlang 之间的互操作示例时:

gcc -o fac -I/usr/local/lib/erlang/lib/erl_interface-3.5.9/include \ -L/usr/local/lib/erlang/lib/erl_interface-3.5.9/lib fac.c -lerl_interface -lei

我的系统是 Ubuntu。我得到了下一个错误:

/usr/lib/libei.a(ei_pthreads.o):在函数__erl_errno_place': (.text+0x4c): undefined reference topthread_once' /usr/lib/libei.a(ei_pthreads.o): 在函数__erl_errno_place': (.text+0x7a): undefined reference topthread_getspecific' /usr/lib/libei.a(ei_pthreads.o): 在函数__erl_errno_place': (.text+0xa2): undefined reference topthread_setspecific' /usr/lib/libei.a(ei_pthreads.o): 在函数__erl_errno_place': (.text+0xb4): undefined reference topthread_getspecific' /usr/lib/libei.a(ei_pthreads.o): 在函数erl_errno_key_alloc': (.text+0x136): undefined reference topthread_key_create' /usr/lib/libei.a(ei_pthreads.o):在函数ei_m_trylock': (.text+0x189): undefined reference topthread_mutex_trylock' collect2: ld 返回 1 个退出状态

有什么建议吗?

【问题讨论】:

    标签: c interop erlang


    【解决方案1】:

    您需要链接pthread 库。试试:
    gcc -o fac -I/usr/local/lib/erlang/lib/erl_interface-3.5.9/include -L/usr/local/lib/erlang/lib/erl_interface-3.5.9/lib fac.c -lerl_interface -lei -lpthread
    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      请尝试指定命令行选项-pthread(或者如果有更改-lpthread)可以解决问题。

      【讨论】:

      • 对这两个答案都投了赞成票,但接受第二个,因为它更精确。非常感谢。
      猜你喜欢
      • 2011-06-30
      • 2011-05-06
      • 2015-07-01
      • 2015-02-05
      • 1970-01-01
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多