0

c++ アプリケーションに guile を埋め込みたいのですが、コンパイルしようとすると「未定義の参照」エラーが発生します: Ubuntu 12.04 guile-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に埋め込むと、すべてが期待どおりに機能します。

このエラーの原因は何ですか?

ベスト、ジャン・ピーター

4

1 に答える 1

1

はい。ビルド手順に正しく従いませんでした。:-) 特に、依存オブジェクトのにリンクの依存関係を指定する必要があります。代わりにこれを試してください:

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

特に、ライブラリは、それらを使用するすべてのオブジェクト ( など) のにリストする必要がありますguile-test.c

(ちなみに、これは Guile 固有のものではありません。標準リンカは常にこの順序を想定しています。)

于 2014-02-11T12:55:13.437 に答える