Chinaunix首页 | 论坛 | 博客
  • 博客访问: 99961
  • 博文数量: 33
  • 博客积分: 101
  • 博客等级: 民兵
  • 技术积分: 185
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-17 22:42
文章分类
文章存档

2013年(1)

2012年(16)

2011年(16)

我的朋友

分类:

2011-12-14 00:40:01

原文地址:perl编绎成exe 作者:hyoryeo

平台cygwin,
gcc:mingw

hellocgi.pl
#!c:/perl/bin/perl.exe

#print "Content-type: text/html\n\n";
print "hello";


执行/cygdrive/c/perl/bin/perlcc.bat hellocgi.pl[code]Set up gcc environment - 4.6.1
pccMpHkL.c: In funciton 'perl_init_aaaa':
pccMpHkL.c:2124:2: warning: this decimal constant is unsigned only in ISO C90 [enabled by default]
c:/minw/bin/../lib/gcc/mingw32/4.6.1/../../../mingw32/bin/ld.exe:cannot find -lperl
collect2: ld return 1 exit status


由于perlcc编绎不过,用了最笨最简单的方法,用activePerl+cpan终于成功了。献上结果。希望未成功的同学也能成功
  1. 安装PAR-Packer

  2. 安装ActivePerl-5.14.2.1402-MSWin32-x86-295342.msi
  3. 设置系统环境变量PERL_TEST_POD = 1, 这个只是make test时需要,理论可忽略。

  4. ppm install cpan 如果没有安装
  5. ppm install Win32-Exe

  6. 进行cpan自动下载安装minGw
  7. It looks like you don
ps:编绎的库超大1K的文件打成EXE变成2M多(把静态库打上去的结果),perlcc再看看

perlcc已经编绎成功了。
  1. perlcc就windows版本从代码得知实际的运行的参数以及调用的库及参数
  2. C:\idscontrol\perl\bin\perl.exe -IC:/idscontrol/perl/site/lib -IC:/idscontrol/perl/lib -IC:/idscontrol/perl/lib/CORE -I. -MO=C,-umain,-uutf8,-uWin32CORE,-uattributes,-uRegexp,-uWin32,-uPerlIO,-uPerlIO::Layer,-uActivePerl,-uInternals,-uDB,-ohello.c hello.cgi

  3. gcc -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE -DPRIVLIB_LAST_IN_INC -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX -DHASATTRIBUTE -fno-strict-aliasing -mms-bitfields -I"C:\idscontrol\Perl\lib\CORE" -o a.exe hello.c -L"C:\idscontrol\Perl\lib\CORE" C:\idscontrol\Perl\lib\CORE\perl58.lib C:\MinGW\lib\libkernel32.a C:\MinGW\lib\libuser32.a C:\MinGW\lib\libgdi32.a C:\MinGW\lib\libwinspool.a C:\MinGW\lib\libcomdlg32.a C:\MinGW\lib\libadvapi32.a C:\MinGW\lib\libshell32.a C:\MinGW\lib\libole32.a C:\MinGW\lib\liboleaut32.a C:\MinGW\lib\libnetapi32.a C:\MinGW\lib\libuuid.a C:\MinGW\lib\libws2_32.a C:\MinGW\lib\libmpr.a C:\MinGW\lib\libwinmm.a C:\MinGW\lib\libversion.a C:\MinGW\lib\libodbc32.a C:\MinGW\lib\libodbccp32.a C:\MinGW\lib\libmsvcrt.a -lperl

去掉-lperl在这我这里能成功编绎, 但不知道是否会产生其他的问题。有知道的解答一下。(因为在使用perl进行编绎的时候已经把所有跟perl相关的库绑定了,所以不太明白为什么还需要libperl)
阅读(1391) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~