2012年9月25日 星期二

使用 C 來執行 Perl

當然先要準備好 Perl,以下為Perl5 在64 bits 系統下

前導程式:  interp.c


  1. #include <EXTERN.h> /* from the Perl distribution */
  2. #include <perl.h> /* from the Perl distribution */
  3. static PerlInterpreter *my_perl; /*** The Perl interpreter ***/
  4. int main(int argc, char **argv, char **env)
  5. {
  6. PERL_SYS_INIT3(&argc,&argv,&env);
  7. my_perl = perl_alloc();
  8. perl_construct(my_perl);
  9. PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
  10. perl_parse(my_perl, NULL, argc, argv, (char **)NULL);
  11. perl_run(my_perl);
  12. perl_destruct(my_perl);
  13. perl_free(my_perl);
  14. PERL_SYS_TERM();
  15. }



先編譯:
# gcc -O2 -Dbool=char -DHAS_BOOL -I/usr/local/include -I/usr/lib64/perl5/CORE -I/usr/lib64/perl5/5.10.0/x86_64-linux-thread-multi/CORE -L/usr/lib64/perl5/CORE -o interp interp.c -lperl -lm

相關路徑可利用以下指令列出 :
#perl -V

如果有編譯完的程式路徑不正確的狀況,有兩個方法來試試看

1.修改環境變數:
   #export LD_LIBRARY_PATH=/usr/lib64/perl5/CORE

2.新增 ld.confg
    #vi /etc/ld.so.conf.d/perlib.conf


  1. /usr/lib64/perl5/CORE/libperl.so
  2. /usr/lib64/perl5/5.10.0/x86_64-linux-thread-multi/CORE/libperl.so

  執行ldconfig
   #ldconfig

其他請參考Perl Document: