Ошибка 127 - рецепт для цели не выполнен - ​​при компиляции примеров Google NaCl из Pepper 19?

Когда я запускаю пакетный файл make в своем терминале Cygwin, я получаю следующий вывод:

mparadis@A-082-MPARADI-0 ~/pepper_19/examples$ make  
make -C dlopen  
make[1]: Entering directory `/cygdrive/c/nacl_sdk/pepper_19/examples/dlopen' /cygdrive/c/nacl_sdk/pepper_19/toolchain/win_x86_glibc/bin/i686-nacl-g++ -o dlopen_x86_32.o -c
dlopen.cc -m32 -g -O0 -pthread -std=gnu++98 -Wno-long-long -Wall  
Makefile:92: recipe for target `dlopen_x86_32.o' failed  
make[1]: *** [dlopen_x86_32.o] Error 127  
make[1]: Leaving directory `/cygdrive/c/nacl_sdk/pepper_19/examples/dlopen'  
Makefile:33: recipe for target `dlopen_TARGET' failed  
make: *** [dlopen_TARGET] Error 2

Потребовалось некоторое время, чтобы правильно настроить Python, потому что мне нужен был пакет языкового интерпретатора, и я не знал, что у меня его еще нет. Моя переменная env для Python правильно установлена ​​​​на C:\python27. Я получаю те же результаты при компиляции кода моих коллег, который я могу нормально скомпилировать на Mac или Linux. К сожалению, мне нужно, чтобы это работало и в моей среде Cygwin.

Любой, у кого есть опыт использования собственного клиента Google или кто знает, почему это происходит, сообщите, пожалуйста. Я так долго этим занимался, что смотрю косыми глазами на экран компьютера.

ОБНОВИТЬ:

Если я вставлю флаг --version в указанную команду в make-файле, я получу ту же ошибку, что и выше. Однако, если я наберу команду как есть из того же рабочего каталога, что и файл make, я получу следующее:

mparadis@A-082-MPARADI-0 ~/pepper_19/examples/dlopen> $ /cygdrive/c/nacl_sdk/pepper_19/toolchain/win_x86_glibc/bin/i686-nacl-g++.exe -o dlopn_x86_32.o -c dlopen.cc -m32 -g -O0 -pthread -std=gnu++98 --версия

mparadis@A-082-MPARADI-0 ~/pepper_19/examples/dlopen $

Другими словами, он просто задумывается на долю секунды, а затем возвращается к подсказке.


person user1580482    schedule 06.08.2012    source источник
comment
Сборка примеров у меня отлично работает с терминала MSYS. Существует ли на самом деле исполняемый файл i686-nacl-g++ в этом месте, и что вы видите, когда вызываете его таким образом с --version в качестве аргумента?   -  person Reinier Torenbeek    schedule 07.08.2012
comment
У меня не было проблем с его сборкой при первой настройке, но по другим причинам мне нужно было удалить все, и с тех пор у меня была эта проблема на моей машине (она делает это на другой машине, на которой я только что пытался ее настроить.   -  person user1580482    schedule 08.08.2012
comment
Именно в этом месте и правильная версия, вот дамп экрана: mparadis@A-082-MPARADI-0 ~/pepper_19/toolchain/win_x86_glibc/bin $ i686-pc-cygwin-g++ --version i686-pc-cygwin-g++ (GCC) 4.5.3 Copyright (C) Free Software Foundation, Inc., 2010 г. Это бесплатное программное обеспечение; см. источник условий копирования. НЕТ гарантии; даже не для КОММЕРЧЕСКОЙ ПРИГОДНОСТИ или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ. Мне интересно, есть ли пакет Cygwin, который мне не хватает.   -  person user1580482    schedule 08.08.2012
comment
Хорошо, но что произойдет, если вы в точности повторите команду /cygdrive/c/nacl_sdk/pepper_19/toolchain/win_x86_glibc/bin/i686-nacl-g++ --version? Я думаю, что ошибка 127 указывает на то, что исполняемый файл отсутствует.   -  person Reinier Torenbeek    schedule 08.08.2012
comment
Если я вставлю флаг --version в указанную команду в make-файле, я получу ту же ошибку, что и выше. Однако, если я наберу команду как есть из того же рабочего каталога, что и файл make, я получу следующее: 'code'mparadis@A-082-MPARADI-0 ~/pepper_19/examples/dlopen $ /cygdrive/c/ nacl_sdk/pepper_19/toolchain/win_x86_glibc/bin/i686-nacl-g++.exe -o dlopn_x86_32.o -c dlopen.cc -m32 -g -O0 -pthread -std=gnu++98 --version mparadis@A-082 -MPARADI-0 ~/pepper_19/examples/dlopen $ ls dlopen.cc dlopen.html восемьball.cc восемьball.h make.bat Makefile'   -  person user1580482    schedule 08.08.2012
comment
Извините, с последним был беспорядок, я не мог понять, как использовать форматирование мини-Markdown для кода. В двух словах, что происходит, я набираю это точно так же, как указано выше, и он не делает ничего, кроме перехода к пустой подсказке оболочки «$». Однако, если я набираю этот полный путь с именем exe и использую только флаг версии, я получаю версию Информация.   -  person user1580482    schedule 08.08.2012
comment
Не могли бы вы добавить эту информацию из вашего последнего комментария в качестве обновления вопроса в удобочитаемой форме?   -  person Reinier Torenbeek    schedule 08.08.2012
comment
@ReinierTorenbeek Готово, извините за это.   -  person user1580482    schedule 09.08.2012
comment
Установите Process Explorer и посмотрите, сколько процессов запущено. bin/i686-nacl-g++.exe — это редиректор к реальному исполняемому файлу libexec/x86_64-nacl-g++.exe. Важно знать, запускается ли настоящий исполняемый файл или нет. Вы также можете попробовать вызвать libexec/x86_64-nacl-g++.exe напрямую, но это должно быть сделано вне cygwin (именно поэтому нужен этот небольшой редиректор).   -  person Ha.    schedule 17.08.2012


Ответы (1)


tl;dr: ваш cygwin может быть глючным и дает этот код возврата всем пакетным файлам. Мой делает это. Моя версия Cygwin:

$ uname -srv
CYGWIN_NT-6.1-WOW64 1.7.17(0.262/5/3) 2012-10-19 14:39

Из вашего комментария я вижу что-то под названием "make.bat":

mparadis@A-082-MPARADI-0 ~/pepper_19/examples/dlopen
$ ls dlopen.cc dlopen.html eightball.cc eightball.h make.bat Makefile

Вы также можете протестировать свой Cygwin с помощью этого небольшого скрипта bash.

#!/bin/bash
echo echo foo %errorlevel% bar >temp.bat
./temp.bat
if [ $? -eq 127 ]; then echo "bug"; fi

Если ваш рецепт make для этой цели использует make.bat, и у вас есть эта ошибка, то эта ошибка cygwin вызывает ошибку 127.

person n611x007    schedule 04.10.2013