Я хочу встроить 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, все работает как положено.
Кто-нибудь знает, что может вызвать эту ошибку?
Бест, Ян-Питер
Да. Вы не правильно следовали инструкциям по сборке. 🙂 В частности, вам нужно указать зависимости ссылок после зависимые объекты. Попробуйте это вместо этого:
gcc -o guile-test `pkg-config guile-1.8 --cflags` guile-test.c `pkg-config guile-1.8 --libs`
В частности, библиотеки должны быть перечислены после все объекты, которые их используют, такие как guile-test.c
,
(Кстати, это не относится к Guile. Стандартный компоновщик всегда ожидает этот порядок.)
Других решений пока нет …