ld — Как мне связать код на C ++ с & quot; libguile & quot; с «guile-1.8.8»?

Я хочу встроить guile в приложение c ++, но я получаю ошибки «undefined reference» при попытке компиляции:
Ubuntu 12.04
лукавства-1.8.8

Если я скомпилирую пример из лживые документы

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, все работает как положено.

Кто-нибудь знает, что может вызвать эту ошибку?

Бест, Ян-Питер

0

Решение

Да. Вы не правильно следовали инструкциям по сборке. 🙂 В частности, вам нужно указать зависимости ссылок после зависимые объекты. Попробуйте это вместо этого:

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

В частности, библиотеки должны быть перечислены после все объекты, которые их используют, такие как guile-test.c,

(Кстати, это не относится к Guile. Стандартный компоновщик всегда ожидает этот порядок.)

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]