如何使用“guile-1.8.8”将c ++代码与“libguile”链接起来?

时间:2014-02-11 07:33:45

标签: c++ ld guile

我想在c ++应用程序中嵌入guile,但在尝试编译时遇到“未定义的引用”错误: Ubuntu 12.04 诡计-1.8.8

如果我从guile docs

编译示例
gcc -o guile-test `pkg-config guile-1.8 --cflags` `pkg-config guile-1.8 --libs` guile-test.c
在控制台上

,它会中止错误:

/tmp/ccHZCHNL.o: In function `inner_main':
guile-test.c:(.text+0x14): undefined reference to `scm_shell'
/tmp/ccHZCHNL.o: In function `main':
guile-test.c:(.text+0x41): undefined reference to `scm_boot_guile'
collect2: ld gab 1 als Ende-Status zurück

如果我编译一些 example.so (包括“libguile.h”)来嵌入guile,那么一切都按预期工作。

有人知道,可能导致此错误的原因是什么?

Best,Jan-Peter

1 个答案:

答案 0 :(得分:1)

是。您没有正确遵循他们的构建说明。 :-)特别是,您需要在依赖对象之后指定链接依赖项。试试这个:

gcc -o guile-test `pkg-config guile-1.8 --cflags` guile-test.c `pkg-config guile-1.8 --libs`

特别是,需要在所有使用它们的对象之后列出库,例如guile-test.c

(顺便说一句,这不是Guile特有的。标准链接器总是期望这种排序。)