2017-07-12 29 views
0

我想链接一个文件,“lib guile_2.0_la-foreign.o”,以便在macOS Sierra上构建guile-2.0.11。从make文件ld命令返回类似ffi符号在哪里定义?

"_ffi_type_float", referenced from: 
_fill_ffi_type in lib guile_2.0_la-foreign.o 

ld: symbol(s) not found for architecture x86_64 

其中“_ffi_type_xxx”中的“XXX”的位置变化十几错误。我用hombrew安装了libffi,并告诉CPPFLAGS和LDFLAGS在哪里找到lib和include目录,但我仍然得到相同的错误。这些符号在哪里可以找到?

+0

建立应用程序时,您是否确实链接过库?用'-lffi'? –

+0

您是否按照如何正确链接Guile的说明操作? https://www.gnu.org/software/guile/manual/guile.html#Linking-Guile-into-Programs也许(虽然我不确定你指的是哪个“诡计”) –

+0

链接完成通过一个通过配置文件生成的Makefile。反过来,配置文件使用自动工具生成,整个过程从下载来自GitHub存储库的guile-2.0.11包开始,并运行该包中的autogen.sh脚本文件。有关配置命令和make输出的更多详细信息,请参阅:[link](https://stackoverflow.com/questions/45013549/build-of-guile-2-0-11-on-macos- sierra-failures-undefined-symbols-for-architecture) – John

回答

0

在Makefile中,有一个环境变量(LIBFFI_LIBS)指定ffi库的路径。我错过了标志,告诉链接器实际链接库。

我将其值从LIBFFI_LIBS="-L/usr/local/opt/libffi/lib"更改为LIBFFI_LIBS="-L/usr/local/opt/libffi/lib -lffi",并且关于未定义的ffi符号的所有错误现在都消失了。