2010-11-05 22 views
1

Je suis en train de compiler un logiciel C++ il y a un mois.Problème lors de l'exécution de Makefile qui appelle le script Perl

Il y a beaucoup de pression pour que cela fonctionne le plus tôt possible.

J'ai été à la recherche de problèmes similaires, mais je suis de plus en plus confus.

J'utilise les éléments suivants:

[email protected] ~/nba >uname -a 
SunOS braw176 5.8 Generic_108528-13 sun4u sparc SUNW,Ultra-5_10 
[email protected] ~/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. 

J'ai exécuté la commande:

[email protected] ~/nba/DLPRTER_CAA/bin/RPG3/default >make -dwp all 

Mais je reçois ce qui suit:

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. 

Ce qui est fou est que sigunion.pl est enregistré dans le répertoire indiqué:

[email protected] ~/nba >cd /aps/APS40/RPG3_R4A/lib/cmtool/plugin/rpg3.R3B/tools/tools/scripts/ 
[email protected] /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 

S'il vous plaît, aidez-moi à trouver comment résoudre ce problème. Je ne sais vraiment pas quoi faire d'autre.

J'ai essayé d'exécuter ce qui suit juste pour voir ce qui se passe:

[email protected] /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. 

Info:

[email protected] /aps/APS40/RPG3_R4A/lib/cmtool/plugin/rpg3.R3B/tools/tools/scripts >which perl 
/usr/bin/perl 
[email protected] /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 


[email protected] /aps/APS40/RPG3_R4A/lib/cmtool/plugin/rpg3.R3B/tools/tools/scripts >head sigunion.pl 
#! /usr/atria/bin/Perl 
+2

C'est une énorme quantité de contenu qui obscurcit le problème. Les seuls bits pertinents sont la ligne dans le makefile qui tente d'invoquer le script (que vous n'avez pas inclus!), Et le message d'erreur qui en résulte. – Ether

+0

Désolé pour ça, mais j'ai mis toutes les informations là où mon analyse s'est arrêtée. Je ne pouvais pas trouver si loin où est la macro AUTOCREATE. – Johnny

Répondre

3

Je soupçonne fortement que le tralala dans sigunion.pl (aka la # ligne!) pointe vers le mauvais endroit pour votre exécutable perl.

head sigunion.pl va vous montrer où sigunion.pl pense que perl est, et which perl va vous montrer où perl est réellement installé.

Exemple:

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

L'utilisation de '#!/Usr/bin/env perl' pourrait résoudre le problème. –

3

/bin/sh:/aps/APS40/RPG3_R4A/lib/cmtool/plugin/rpg3.R3B/tools/tools/scripts/sigunion.pl: non trouvé

... indique que/bin/sh n'a pas pu trouver comment exécutez le script sigunion.pl. Il est probablement manque une ligne de tralala:

#!/usr/bin/perl 

... qui indique au shell ce programme externe (dans ce cas, perl) pour analyser et exécuter le fichier.

Alternativement, vous pouvez simplement laisser perl être trouvé dans le $PATH, en changeant la ligne appropriée dans le Makefile à:

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

L'utilisation de '#!/Usr/bin/env perl' pourrait résoudre le problème. –

+0

@Jonathan: d'accord, parfois '/ usr/bin' n'est pas le bon emplacement. – Ether

+0

quelle plate-forme n'a pas 'env' dans'/usr/bin'? J'ai vérifié: Solaris, HP-UX, AIX, Linux, MacOS X - tous les ont dans '/ usr/bin'. Sous Linux (et Solaris), c'est aussi * dans */bin'. Ou faisiez-vous référence à 'parfois Perl ne se trouve pas dans/usr/bin'? Dans ce cas, je suis d'accord à 100% avec vous. –