运行调用Perl脚本的Makefile时出现问题

时间:2010-11-05 18:35:06

标签: perl scripting makefile compilation

我正在尝试在一个月前编译一个C ++软件。

要尽快完成这项工作会有很大的压力。

我一直在寻找类似的问题,但我越来越困惑。

我正在使用以下内容:

bcmsa@braw176 ~/nba >uname -a
SunOS braw176 5.8 Generic_108528-13 sun4u sparc SUNW,Ultra-5_10
bcmsa@braw176 ~/nba >make -v
make -v
GNU Make version 3.79.1, by Richard Stallman and Roland McGrath.
Built for sparc-sun-solaris2.8
Copyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
        Free Software Foundation, Inc.

我执行了命令:

bcmsa@braw176 ~/nba/DLPRTER_CAA/bin/RPG3/default >make -dwp all

但我收到以下内容:

Reaping winning child 0x0006da38 PID 27586
/bin/sh: /aps/APS40/RPG3_R4A/lib/cmtool/plugin/rpg3.R3B/tools/tools/scripts/sigunion.pl: not found
Live child 0x0006da38 (/export/home/bcmsa/nba/DLPRTER_CAA/bin/RPG3/default/sigunion.h) PID 27588
Got a SIGCHLD; 1 unreaped children.
Reaping losing child 0x0006da38 PID 27588
make: *** [/export/home/bcmsa/nba/DLPRTER_CAA/bin/RPG3/default/sigunion.h] Error 1
Removing child 0x0006da38 PID 27588  from chain.

疯狂的是sigunion.pl存储在指定的目录中:

bcmsa@braw176 ~/nba >cd /aps/APS40/RPG3_R4A/lib/cmtool/plugin/rpg3.R3B/tools/tools/scripts/
bcmsa@braw176 /aps/APS40/RPG3_R4A/lib/cmtool/plugin/rpg3.R3B/tools/tools/scripts >ls -la
total 120
drwxrwsr-x   2 80422    3626        4096 Jun 12  2002 .
drwxrwsr-x   3 80422    3626        4096 Jun 12  2002 ..
-r-xr-xr-x   1 80422    3626        2195 Jun 28  1999 bdt_c.sh
-r-xr-xr-x   1 80422    3626        2449 Mar  8  1999 bdt_h.sh
-r-xr-xr-x   1 80422    3626         681 Oct 20  1999 change_base
-r-xr-xr-x   1 80422    3626         990 Oct 20  1999 convert_to_iog11
-r-xr-xr-x   1 80422    3626         692 Oct 20  1999 create_directory
-r-xr-xr-x   1 80422    3626         604 Oct 20  1999 create_elements
-r--r--r--   1 80422    3626         582 Mar  2  1999 create_elements.base
-r-xr-xr-x   1 80422    3626        2059 Dec 13  2001 generate_signal_files.csh
-r-xr-xr-x   1 80422    3626         486 Oct 20  1999 generate_version_info
-r-xr-xr-x   1 80422    3626         610 Oct 20  1999 get_program.csh
-r-xr-xr-x   1 80422    3626         760 Oct 20  1999 get_suid.csh
-r-xr-xr-x   1 80422    3626         774 Oct 20  1999 set_autostart.pl
-r-xr-xr-x   1 80422    3626        1555 Oct 20  1999 sigunion.pl

请帮我找到解决这个问题的方法。 我真的不知道还能做什么。

我试图执行以下操作只是为了看看会发生什么:

bcmsa@braw176 /aps/APS40/RPG3_R4A/lib/cmtool/plugin/rpg3.R3B/tools/tools/scripts >perl sigunion.pl
Can't exec /usr/atria/bin/Perl at sigunion.pl line 1.

的信息:

bcmsa@braw176 /aps/APS40/RPG3_R4A/lib/cmtool/plugin/rpg3.R3B/tools/tools/scripts >which perl
/usr/bin/perl
bcmsa@braw176 /aps/APS40/RPG3_R4A/lib/cmtool/plugin/rpg3.R3B/tools/tools/scripts >perl -v

This is perl, version 5.005_03 built for sun4-solaris


bcmsa@braw176 /aps/APS40/RPG3_R4A/lib/cmtool/plugin/rpg3.R3B/tools/tools/scripts >head sigunion.pl 
#! /usr/atria/bin/Perl

2 个答案:

答案 0 :(得分:4)

我强烈怀疑sigunion.pl(又名#!行)中的shebang指向你的perl可执行文件的错误位置。

head sigunion.pl将显示sigunion.pl认为perl的位置,which perl将显示实际安装perl的位置。

示例:

$ head sigunion.pl
#!/usr/bin/perl
.....stuff omited
$ which perl
/usr/opt/perl-5.8.8/bin/perl

答案 1 :(得分:3)

  

/ bin / sh:/aps/APS40/RPG3_R4A/lib/cmtool/plugin/rpg3.R3B/tools/tools/scripts/sigunion.pl:not found

...表示/ bin / sh无法弄清楚如何运行脚本sigunion.pl。它可能缺少一个shebang系列:

#!/usr/bin/perl

...告诉shell解析和运行文件的外部程序(在本例中为perl)。

或者,您可以在perl中找到$PATH,方法是将Makefile中的相应行更改为:

perl /aps/APS40/RPG3_R4A/lib/cmtool/plugin/rpg3.R3B/tools/tools/scripts/sigunion.pl <arguments>