2017-07-12 28 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符號的所有錯誤現在都消失了。