Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Системное программирование > Компиляция и вызов perl-скрипта из C


Автор: schurshik 24.11.2011, 16:13
Привет всем!

Есть проблема с компиляцией встраиваемго в C perl-кода.
У меня debian squeeze.
Например, даже такой простой пример (из книги Ларри Уолла):
Код

#include <EXTERN.h>               /* from the Perl distribution     */
#include <perl.h>                 /* from the Perl distribution     */

static PerlInterpreter *my_perl;  /***    The Perl interpreter    ***/

int main(int argc, char **argv, char **env)
{
    my_perl = perl_alloc();
    perl_construct(my_perl);
    perl_parse(my_perl, NULL, argc, argv, (char **)NULL);
    perl_run(my_perl);
    perl_destruct(my_perl);
    perl_free(my_perl);
    return 0;
}

не компилируется ни так:
cc -L/usr/local/lib -o interp interp.c `perl -MExtUtils::Embed -e ccopts -e ldopts` -lperl -lm
ни так:
cc -O2 -I/usr/local/include -I/usr/lib/perl/5.10/CORE -L/usr/local/lib -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -o interp interp.c -lperl -lm
В обоих случаях появляется следующее:
/usr/bin/ld: cannot find -lperl
collect2: ld returned 1 exit status
В perldoc perlembed пишется, что такое возникает, когда не указан путь к библиотеке в ключе -L. Я этот путь прописал => может неправильный путь я указал?
Очень надеюсь на Ваши советы и помощь.

Автор: Pfailed 24.11.2011, 18:56
$ apt-file search libperl.so
libperl-dev: /usr/lib/libperl.so
perl-base: /usr/lib/libperl.so.5.14
perl-base: /usr/lib/libperl.so.5.14.2
perl-debug: /usr/lib/debug/usr/lib/libperl.so.5.14.2

Установлен libperl-dev?

Автор: schurshik 24.11.2011, 19:35
2 Pfailed
Спасибо большое за ответ: после установки libperl-dev все заработало. Проблема решена!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)