`
cryolite
  • 浏览: 581429 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Erlang Interoperability Tutorial文档中的例子

阅读更多
linux新手可能会遇到这个问题。

第6章Port drivers中
Erlang Interoperability Tutorial文档第6章Port drivers中有几个文字错误,影响编译

gcc -I/usr/local/lib/erlang/usr/include/ -o example_drv.so -fpic -shared complex.c port_driver.c

要带.so的后缀名才行,不然装载例子中的静态库时会出现如下错误
exception exit: {error,{open_error,-10}}
我猜open_error,-10的意思应该是找不着某些库,错误代码在哪儿查我还没找到地方,先记下
另外要小心的是,在DRIVER_INIT返回的port driver entry结构中有一成员指定了erl_ddll:open_port函数的参数,所以共享库的名字还不能随便取

编译环境:RedHat linux

在MacOSX下

gcc -I/opt/local/lib/erlang/usr/include/ -L/opt/local/lib/erlang/usr/lib/ -o example_drv.so -fpic -shared -bundle -flat_namespace -undefined suppress -fno-common complex.c port_driver.c


gcc 4.2下去掉-bundle
gcc -o example_drv.so -fpic -shared -flat_namespace -undefined suppress -fno-common -I/usr/local/lib/erlang/usr/include -L/usr/local/lib/erlang/usr/lib/ complex.c port_driver.c


参见:
http://www.wagerlabs.com/blog/2008/02/erlang-ffi---in.html

第5章中的编译命令
gcc -o extprg -I/usr/local/lib/erlang/lib/erl_interface-3.5.9/include/ \
 -L/usr/local/lib/erlang/lib/erl_interface-3.5.9/lib/ \
 complex.c erl_comm.c ei.c \
 -lerl_interface -lei -lpthread


记得加上线程库


分享到:
评论
1 楼 boost 2008-09-21  
:) 很好,正好刚才遇到这个问题呵呵。
这个错误代码是在 erts/emulator/beam/erl_bif_ddll.c 中返回的。

相关推荐

    erlang 环境配置文档说明

    根据文档中的提示,假设已经下载并安装了Erlang 5.9.1版本。 ##### 2. 设置环境变量 - **PATH**: 添加Erlang安装目录下的`bin`目录到系统环境变量PATH中,例如:`C:\Program Files\erl5.9.1\bin`。 - **ERL_HOME**...

    erlang 中文,chm参考文档

    "erlang 中文,chm参考文档"提供了丰富的Erlang学习资源,包括"Erlang手册(5.8.2).chm"和"erlang深度分析.pdf"。这两个文件将帮助你全面理解Erlang的基础语法、并发模型、错误处理机制以及高级特性。 Erlang手册...

    erlang的翻译文档

    通过学习Erlang/OTPR11B文档,初学者可以逐步掌握Erlang的基础知识和高级特性,进而能够开发出高性能、高可靠性的分布式应用程序。此外,Erlang/OTP框架为构建复杂的应用程序提供了一套完整的设计模式和工具支持。

    在erlang项目中使用protobuf例子

    标题中的“在erlang项目中使用protobuf例子”指的是在Erlang编程环境中使用Protocol Buffers(protobuf)这一数据序列化工具。protobuf是由Google开发的一种高效、跨语言的数据表示和序列化格式,它允许开发者定义...

    erlang otp 19.1 官网文档 HTML格式

    Erlang OTP 19.1 是一个重要的版本更新,主要...总的来说,Erlang OTP 19.1的官方文档对于理解和使用这个版本的Erlang系统至关重要,它为开发者提供了深入的技术细节和最佳实践,帮助他们构建高效且健壮的分布式应用。

    Erlang/OTP Application完整例子

    Erlang/OTP Application完整例子,含代码和二进制,对于学习Erlang/OTP Application很有帮助。 配套文章http://blog.csdn.net/mycwq/article/details/12610677

    graphql-erlang-tutorial:graphql-erlang系统的教程

    GraphQL-Erlang教程该存储库包含有关graphql-erlang系统的教程。 它实现了SWAPI(的子集)作为... 要构建文档,您需要: asciidoctor-我们使用asciidoctor的标记功能来引用文档内存储库中的源代码。 我用gem install as

    erlang文档介绍

    erlang介绍介绍opt开发方法中文资料

    Erlang实战项目源代码_tutorial.zip

    Erlang实战项目源代码_tutorial

    Erlang文档资料大集合

    **Erlang文档资料大集合** 是一个综合性的资源包,包含了丰富的Erlang学习资料,旨在帮助初学者和有经验的开发者深入理解和掌握Erlang编程语言。Erlang是一种面向并发、分布式、容错的函数式编程语言,特别适合于...

    Erlang编程规则——中文翻译版本

    本文将对Erlang编程规则的中文翻译版本中的部分内容进行详细解析,包括Erlang术语、SW工程原则、程序、服务器和消息处理、Erlang特殊约定、常见错误以及所需文档约定等。 Erlang术语部分提到了Erlang程序的模块化...

    erlang 连接学习例子

    在这个“erlang 连接学习例子”中,我们有两个核心文件:`server.erl` 和 `client.erl`,它们分别代表了一个服务器进程和客户端进程,展示了Erlang中进程间的通信机制。 `server.erl` 文件通常包含一个持续运行的...

    Erlang OTP设计原理文档 中文版本

    Erlang OTP(Open Telephony Platform)是Erlang编程语言的一个核心部分,它提供了...通过深入理解这些文档和概念,开发者能够构建出符合OTP原则的、高度可靠的Erlang系统,有效地处理并发、故障恢复和系统扩展性问题。

    读书笔记:ErlangOTP设计原则中文文档.zip

    读书笔记:ErlangOTP设计原则中文文档

    erlang英文手册+中文教程

    阅读这两份文档将对Erlang的语法、核心概念以及如何利用其特性来构建可靠系统有全面的了解。实践中,可以通过编写简单的并发程序和模拟分布式场景来巩固所学知识。 总之,Erlang是一种强大的工具,尤其适合构建高...

    Erlang/OTP R11B 文档

    Erlang/OTP R11B 文档 中文文档

    erlang程序设计相关例子程序

    在提供的文件列表中,我们可以看到一系列与Erlang编程相关的`.beam`文件,这些都是编译后Erlang模块的二进制表示。下面我们将详细探讨这些文件可能涉及的Erlang知识点。 1. **lib_misc.beam** - 这个文件可能包含...

    erlang官方资源包

    5. Erlang环境设置:安装完成后,需要将Erlang的bin目录添加到系统的PATH环境变量中,以便于在终端中使用erl和其他Erlang工具。 6. 开发和调试:OTP提供了丰富的调试工具,如 observer 和 debugger,帮助开发者监控...

    远古封神Server(erlang源码)+文档+mongodb数据库

    1. 数据存取:Erlang进程可以透明地读写MongoDB中的文档,实现游戏状态的实时更新。 2. 并发操作:Erlang的并发特性可以并行处理多个玩家的请求,同时与MongoDB进行数据交换,提高整体性能。 3. 错误处理:Erlang的...

    Erlang中文手册.pdf

    - **1.2.8 一个更大的例子**:通过一个完整的例子展示Erlang的编程方式。 - **1.2.9 变量的匹配、守卫和作用域**:深入讲解Erlang中变量的行为和模式匹配。 - **1.2.10 更多关于列表**:讲解列表的高级特性。 - **...

Global site tag (gtag.js) - Google Analytics