Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dll 如何构建Rebol';s";“任-C”;有LibFFI支持的分支机构?_Dll_Rebol_Rebol3 - Fatal编程技术网

Dll 如何构建Rebol';s";“任-C”;有LibFFI支持的分支机构?

Dll 如何构建Rebol';s";“任-C”;有LibFFI支持的分支机构?,dll,rebol,rebol3,Dll,Rebol,Rebol3,我想使用Rebol分支中的FFI功能访问动态库。我理解,通过启用LibFFI支持进行构建,这是可能的。我需要采取哪些步骤来启用此功能 我主要使用OS X进行开发,不过我也希望能够将其构建为与Linux一起使用。(注意:这可能是应该添加到Wiki中的信息类型,因为这与其说是一个语言问题,不如说是一个随时间变化的问题。但是,可以回答,所以…) 如果您使用GNU make方法构建(其中make-f makefile.boot为您生成一个makefile),那么您应该在其中找到一些行,如: TO_OS_

我想使用Rebol分支中的FFI功能访问动态库。我理解,通过启用LibFFI支持进行构建,这是可能的。我需要采取哪些步骤来启用此功能

我主要使用OS X进行开发,不过我也希望能够将其构建为与Linux一起使用。

(注意:这可能是应该添加到Wiki中的信息类型,因为这与其说是一个语言问题,不如说是一个随时间变化的问题。但是,可以回答,所以…)

如果您使用GNU make方法构建(其中
make-f makefile.boot
为您生成一个makefile),那么您应该在其中找到一些行,如:

TO_OS_BASE?= TO_OSX
TO_OS_NAME?= TO_OSX_X64
OS_ID?= 0.2.40
BIN_SUFFIX=
RAPI_FLAGS= -D__LP64__ -DENDIAN_LITTLE -DHAS_LL_CONSTS -O1 ...
HOST_FLAGS= -DREB_EXE  -D__LP64__ -DENDIAN_LITTLE ...
修改开头的RAPI_标志和HOST_标志行,以添加可用的
-DHAVE_LIBFFI_
。(-D)定义了一个预处理器指令,告诉代码可以生成对FFI的调用,因为您可以在以后链接它

现在告诉它在哪里可以找到include文件。有一行包含的内容应该如下所示:

INCL ?= .
I= -I$(INCL) -I$S/include/ -I$S/codecs/ ...
最后,您需要添加类似于
-I/usr/local/opt/libffi/lib/libffi-3.0.13/include
或类似内容的内容。实际目录将取决于系统上libffi的位置。在我看到的OSX系统中,它有两个文件,
ffi.h
ffitarget.h

(注意:恐怕我不知道这些文件是如何在这台计算机上出现的。它们不是随操作系统提供的,所以它们来自……某处。我通常不会在OSX上开发——也不会因此而使用此FFI。您必须在OSX网站上咨询您当地的FFI,或者联系支持人员)谁将FFI功能添加到Rebol。)

然后有必要告诉它你在你的系统里有libffi。您将发现一个CLIB行,它很可能就是
CLIB=-lm
。例如,您可以将其更改为:

CLIB= -L/usr/local/opt/libffi/lib -lm -lffi
-lffi
告诉它查找ffi(-l)库,-lxxx表示它假定库的名称为
libxxx[something]
<代码>-L/usr/local/opt/libffi/lib告诉它在哪里查找它。你必须弄清楚你在哪里(如果在任何地方)有libffi,如果没有得到它。如果您拥有它,目录将包含以下内容:

libffi-3.0.13
libffi.6.dylib
libffi.a
libffi.dylib
pkgconfig
我主要使用OSX进行开发,不过我也希望能够将其构建为与Linux一起使用

在Linux上类似,但通常更容易获得库,就像
sudo apt get install libffi dev
一样简单。RFLAGS和CFLAGS的步骤相同,它应该自动处理位置。。。因此,您可以将
-lffi
添加到CLIB。

我的旧笔记:

lib ffi osx的cat步骤

通过自制软件安装libfffi

brew安装libffi

将/use/include/libffi添加到生成的makefile中的-I中

将/usr/local/ceral/libffi/3.0.13/lib/libffi.a添加到 生成的生成文件


版本3.0.13可能会有所不同

我已经对生成的makefile进行了更改,如何调用它?好的-
make
似乎可以工作。现在还不能创建一个例程:“这个Rebol构建没有与libffi功能链接”,每次聊天:
makeclean
then
make
^^^在这种情况下,我使用了一个约塞米蒂盒子来构建,所以Fork的配方对我来说很有效。不过,我不确定OSX的哪个版本是第一个包含LibFFI的版本。