2013-02-26 2 views
1

Можете ли вы помочь мне создать eleveldb на Cygwin? Мой gcc 4.5.3, и я на 64-битной ОС W7 с 32-разрядной установкой cygwin. Я смог создать leveldb с помощью Microsoft SDK и программы msbuild. Вот выход из моего Cygwin Баш кли:Ошибка при создании Eleveldb на окнах с использованием cygwin

[email protected] ~/eleveldb 
$ ./rebar compile 
==> Entering directory `c:/cygwin/home/user1/eleveldb' 
==> eleveldb (compile) 
'c_src' is not recognized as an internal or external command, 
operable program or batch file. 
ERROR: Command [compile] failed! <br/> 

Выход ./rebar -vvv compile как в соответствии с:

$ ./rebar -vvv compile 
DEBUG: Rebar location: "c:/cygwin/home/user1/eleveldb/rebar" 
DEBUG: Consult config file "c:/cygwin/home/user1/eleveldb/rebar.config" 
==> Entering directory `c:/cygwin/home/user1/eleveldb' 
DEBUG: Consult config file "c:/cygwin/home/user1/eleveldb/rebar.config" 
DEBUG: Available deps: [] 
DEBUG: Missing deps : [] 
DEBUG: Predirs: [] 
==> eleveldb (compile) 
INFO: sh info: 
     cwd: "C:/cygwin/home/user1/eleveldb" 
     cmd: c_src/build_deps.sh 
DEBUG: opts: [{env,[{"REBAR_DEPS_DIR","c:/cygwin/home/user1/eleveldb/deps"}, 
        {"ERL_LIBS","c:/cygwin/home/user1/eleveldb/deps"}, 
        {"ALLUSERSPROFILE","C:\\ProgramData"}, 
        {"ANT_HOME","C:\\Tools\\apache-ant-1.7.1"}, 
        {"APPDATA","C:\\Users\\user1\\AppData\\Roaming"}, 
        {"AR","ar.sh"}, 
        {"CC","cc.sh"}, 
        {"CFLAGS","-mno-cygwin -Wall -O3 -fPIC"}, 
        {"CLASSPATH", 
         ".;F:\\SERVERS\\TimesTen\\tt70_64\\lib\\ttjdbc5.jar;C:\\TOOLS\\Win32\\JAVA\\jre6\\lib\\ext\\QTJava.zip"}, 
        {"COMMONPROGRAMFILES", 
         "C:\\Program Files (x86)\\Common Files"}, 
        {"COMPUTERNAME","mycomputer"}, 
        {"COMSPEC","C:\\Windows\\system32\\cmd.exe"}, 
        {"CVS_RSH","/bin/ssh"}, 
        {"CXX","cc.sh"}, 
        {"CXXFLAGS"," -Wall -O3 -fPIC"}, 
        {"CommonProgramFiles(x86)", 
         "C:\\Program Files (x86)\\Common Files"}, 
        {"CommonProgramW6432","C:\\Program Files\\Common Files"}, 
        {"DISPLAY",":0.0"}, 
        {"DRV_CC_TEMPLATE", 
         "cc.sh -c -mno-cygwin -Wall -O3 -fPIC -g -Wall -fPIC -If:/Tools/erl5.9/lib/erl_interface-3.7.6/include -If:/Tools/erl5.9/erts-5.9/include -O3 -Wall -I c_src/leveldb/include $PORT_IN_FILES -o $PORT_OUT_FILE"}, 
        {"DRV_CFLAGS", 
         "-g -Wall -fPIC -If:/Tools/erl5.9/lib/erl_interface-3.7.6/include -If:/Tools/erl5.9/erts-5.9/include -O3 -Wall -I c_src/leveldb/include"}, 
        {"DRV_CXX_TEMPLATE", 
         "cc.sh -c -Wall -O3 -fPIC -g -Wall -fPIC -If:/Tools/erl5.9/lib/erl_interface-3.7.6/include -If:/Tools/erl5.9/erts-5.9/include -O3 -Wall -I c_src/leveldb/include $PORT_IN_FILES -o $PORT_OUT_FILE"}, 
        {"DRV_LDFLAGS", 
         "-shared -Lf:/Tools/erl5.9/lib/erl_interface-3.7.6/lib -lerl_interface -lei c_src/leveldb/libleveldb.a c_src/system/lib/libsnappy.a -lstdc++"}, 
        {"DRV_LINK_TEMPLATE", 
         "cc.sh $PORT_IN_FILES $LDFLAGS -shared -Lf:/Tools/erl5.9/lib/erl_interface-3.7.6/lib -lerl_interface -lei c_src/leveldb/libleveldb.a c_src/system/lib/libsnappy.a -lstdc++ -o $PORT_OUT_FILE"}, 
        {"ERLANG_ARCH","32"}, 
        {"ERLANG_TARGET","R15B-win32-32"}, 
        {"ERL_CFLAGS", 
         " -If:/Tools/erl5.9/lib/erl_interface-3.7.6/include -If:/Tools/erl5.9/erts-5.9/include "}, 
        {"ERL_CONSOLE_MODE","tty:ccc"}, 
        {"ERL_EI_LIBDIR", 
         "f:/Tools/erl5.9/lib/erl_interface-3.7.6/lib"}, 
        {"ERL_LDFLAGS", 
         " -Lf:/Tools/erl5.9/lib/erl_interface-3.7.6/lib -lerl_interface -lei"}, 
        {"ERL_TOP","/home/user1/otp_src_R13B04"}, 
        {"EXE4J_JAVA_HOME","C:\\Tools\\x64\\Java\\jdk1.6.0_17"}, 
        {"EXE_CC_TEMPLATE", 
         "cc.sh -c -mno-cygwin -Wall -O3 -fPIC -g -Wall -fPIC -If:/Tools/erl5.9/lib/erl_interface-3.7.6/include -If:/Tools/erl5.9/erts-5.9/include $PORT_IN_FILES -o $PORT_OUT_FILE"}, 
        {"EXE_CFLAGS", 
         "-g -Wall -fPIC -If:/Tools/erl5.9/lib/erl_interface-3.7.6/include -If:/Tools/erl5.9/erts-5.9/include "}, 
        {"EXE_CXX_TEMPLATE", 
         "cc.sh -c -Wall -O3 -fPIC -g -Wall -fPIC -If:/Tools/erl5.9/lib/erl_interface-3.7.6/include -If:/Tools/erl5.9/erts-5.9/include $PORT_IN_FILES -o $PORT_OUT_FILE"}, 
        {"EXE_LDFLAGS", 
         " -Lf:/Tools/erl5.9/lib/erl_interface-3.7.6/lib -lerl_interface -lei"}, 
        {"EXE_LINK_TEMPLATE", 
         "cc.sh $PORT_IN_FILES $LDFLAGS -Lf:/Tools/erl5.9/lib/erl_interface-3.7.6/lib -lerl_interface -lei -o $PORT_OUT_FILE"}, 
        {"FP_NO_HOST_CHECK","NO"}, 
        {"GRADLE_HOME","C:\\FRAMEWORKS\\gradle-1.3"}, 
        {"HISTCONTROL","ignoredups"}, 
        {"HISTIGNORE","[ ]*:&:bg:fg:exit"}, 
        {"HOME","C:\\cygwin\\home\\user1"}, 
        {"HOMEDRIVE","C:"}, 
        {"HOMEPATH","\\Users\\user1"}, 
        {"HOSTNAME","mycomputer"}, 
        {"INCLUDE", 
         "f:\\Program Files (x86)\\Microsoft Visual Studio .NET 2003\\SDK\\v1.1\\include\\"}, 
        {"INFOPATH","/usr/local/info:/usr/share/info:/usr/info:"}, 
        {"JAVA_HOME","C:\\Tools\\x64\\Java\\jdk1.6.0_17"}, 
        {"JAVA_HOME1","C:\\Tools\\Win32\\Java\\jdk1.5.0_17"}, 
        {"JDK5","C:\\Tools\\Win32\\Java\\jdk1.5.0_17"}, 
        {"JDK6_x64","C:\\Tools\\x64\\Java\\jdk1.6.0_17"}, 
        {"LANG","en_US.UTF-8"}, 
        {"LIB", 
         "f:\\Program Files (x86)\\Microsoft Visual Studio .NET 2003\\SDK\\v1.1\\Lib\\"}, 
        {"LOCALAPPDATA","C:\\Users\\user1\\AppData\\Local"}, 
        {"LOGONSERVER","\\\\mycomputer"}, 
        {"M2_HOME","C:\\Tools\\apache-maven-3.0.4"}, 
        {"MAKE_MODE","unix"}, 
        {"MANPATH", 
         "/usr/local/man:/usr/share/man:/usr/man::/usr/ssl/man"}, 
        {"MEDIAMALL","C:\\Program Files (x86)\\MediaMall\\"}, 
        {"MEMBASE_NUM_VBUCKETS","256"}, 
        {"NUMBER_OF_PROCESSORS","2"}, 
        {"NVM_DIR","/home/user1/.nvm"}, 
        {"OLDPWD","/home/user1/eleveldb/c_src"}, 
        {"OPENRDA_INI", 
         "F:\\tools\\CA\\ERwin Data Modeler r7.3\\OpenAccess\\bin\\iwinnt\\openrda.ini"}, 
        {"OS","Windows_NT"}, 
        {"OVERRIDE_CONFIG_CACHE", 
         "/home/user1/otp_src_R13B04/erts/autoconf/win32.config.cache"}, 
        {"OVERRIDE_TARGET","win32"}, 
        {"PATH", 
         "F:\\Tools\\erl5.9\\erts-5.9\\bin;C:\\cygwin\\home\\user1\\otp_src_R13B04\\erts\\etc\\win32\\cygwin_tools\\vc;C:\\cygwin\\home\\user1\\otp_src_R13B04\\erts\\etc\\win32\\cygwin_tools;C:\\cygwin\\usr\\local\\bin;C:\\cygwin\\bin;C:\\cygwin\\bin;C:\\cygwin\\usr\\X11R6\\bin;C:\\Tools\\x64\\Java\\JDK16~1.0_1\\bin;C:\\cygwin\\bin;F:\\SERVERS\\TimesTen\\tt70_64\\bin;C:\\tools\\win32\\IMAGEM~1.1-Q;C:\\PHP\\PHP-52~1.9-1;C:\\SERVERS\\ORACLE\\oraclexe\\app\\oracle\\product\\102~1.0\\server\\bin;C:\\ruby\\bin;C:\\Perl\\bin;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\PROGRA~2\\COMMON~1\\DIVXSH~1;C:\\PROGRA~2\\MI3EDC~1\\90\\Tools\\binn;C:\\Windows\\System32\\WINDOW~1\\v1.0;C:\\Tools\\COLLAB~1;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;F:\\temp\\tools\\MKVTOO~1;C:\\PROGRA~2\\COMMON~1\\Acronis\\SnapAPI;C:\\PROGRA~2\\Toshiba\\BLUETO~1\\sys;C:\\PROGRA~2\\Toshiba\\BLUETO~1\\sys\\x64;C:\\PROGRA~1\\TORTOI~1\\bin;C:\\PROGRA~2\\QUICKT~1\\QTSystem;C:\\PROGRA~2\\Autodesk\\BACKBU~1;F:\\TOOLS\\scala\\bin;F:\\Tools\\sbt;C:\\PROGRA~2\\giter8;C:\\PROGRA~1\\MI3EDC~1\\110\\Tools\\Binn;C:\\FRAMEW~1\\gradle-1.3\\bin;C:\\Tools\\APACHE~1.4\\bin;C:\\Tools\\APACHE~1.1\\bin;C:\\SERVERS\\Sun\\APPSER~1\\bin;C:\\SERVERS\\MySQL5\\bin;C:\\SERVERS\\MAESTR~1.2\\maven\\bin;C:\\SERVERS\\MAESTR~1.2\\PROJEC~1\\bin;C:\\SERVERS\\MAESTR~1.2\\PROJEC~1\\bin\\WINDOW~1;C:\\Tools\\MERCUR~1;D:\\GNUstep\\GNUstep\\System\\Tools;D:\\GNUstep\\bin;F:\\Tools\\erl5.9\\bin;C:\\cygwin\\lib\\lapack"}, 
        {"PATHEXT", 
         ".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.RB;.RBW"}, 
        {"PHPRC","C:\\PHP\\php-5.2.9-1-Win32\\"}, 
        {"PRINTER","Canon MG3100 series Printer (Copy 2)"}, 
        {"PROCESSOR_ARCHITECTURE","x86"}, 
        {"PROCESSOR_ARCHITEW6432","AMD64"}, 
        {"PROCESSOR_IDENTIFIER", 
         "Intel64 Family 6 Model 23 Stepping 6, GenuineIntel"}, 
        {"PROCESSOR_LEVEL","6"}, 
        {"PROCESSOR_REVISION","1706"}, 
        {"PROGRAMFILES","C:\\Program Files (x86)"}, 
        {"PS1", 
         "\\[\\e]0;\\w\\a\\]\\n\\[\\e[32m\\]\\[email protected]\\h \\[\\e[33m\\]\\w\\[\\e[0m\\]\\n\\$ "}, 
        {"PSModulePath", 
         "C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules\\"}, 
        {"PUBLIC","C:\\Users\\Public"}, 
        {"PWD","/home/user1/eleveldb"}, 
        {"ProgramData","C:\\ProgramData"}, 
        {"ProgramFiles(x86)","C:\\Program Files (x86)"}, 
        {"ProgramW6432","C:\\Program Files"}, 
        {"QMAKESPEC","cygwin-g++"}, 
        {"QTJAVA", 
         "C:\\TOOLS\\Win32\\JAVA\\jre6\\lib\\ext\\QTJava.zip"}, 
        {"RANLIB","true"}, 
        {"RUBYOPT","-rubygems"}, 
        {"SBT_HOME","F:\\Tools\\sbt\\"}, 
        {"SHLVL","1"}, 
        {"SYSTEMDRIVE","C:"}, 
        {"SYSTEMROOT","C:\\Windows"}, 
        {"TEMP","C:\\cygwin\\home\\user1\\tmp"}, 
        {"TERM","xterm"}, 
        {"TMP","C:\\cygwin\\home\\user1\\tmp"}, 
        {"TZ","America/Chicago"}, 
        {"USER","user1"}, 
        {"USERDOMAIN","mycomputer"}, 
        {"USERNAME","user1"}, 
        {"USERPROFILE","C:\\Users\\user1"}, 
        {"VBOX_INSTALL_PATH","C:\\Tools\\Oracle\\VirtualBox\\"}, 
        {"VS110COMNTOOLS", 
         "C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\Common7\\Tools\\"}, 
        {"VS71COMNTOOLS", 
         "f:\\Program Files (x86)\\Microsoft Visual Studio .NET 2003\\Common7\\Tools\\"}, 
        {"VS80COMNTOOLS", 
         "f:\\Program Files (x86)\\Microsoft Visual Studio 8\\Common7\\Tools\\"}, 
        {"WINDIR","C:\\Windows"}, 
        {"_","./rebar"}, 
        {"_M2_HOME","c:\\tools\\apache-maven-2.0.10"}, 
        {"asl.log","Destination=file"}]}, 
       {abort_on_error,"Command [compile] failed!\n"}] 
'c_src' is not recognized as an internal or external command, 
operable program or batch file. 
ERROR: Command [compile] failed! 

[email protected] ~/eleveldb 

После редактирования файла rebar.config с sh -x для «компиляции» pre_hook вот что я вижу :

$ ./rebar compile 
==> Entering directory 'c:/cygwin/home/user1/eleveldb' 
==> eleveldb (compile) 
++ uname -s 
+ '[' CYGWIN_NT-6.1-WOW64 = SunOS -a '' '!=' true ']' 
+ unset POSIX_SHELL 
+ LEVELDB_VSN=1.3.0 
+ SNAPPY_VSN=1.0.5 
+ set -e 
++ basename /home/user1/eleveldb 
+ '[' eleveldb '!=' c_src ']' 
+ cd c_src 
+ BASEDIR=/home/user1/eleveldb/c_src 
+ which gmake 
+ MAKE=make 
+ case "$1" in 
+ '[' '!' -d snappy-1.0.5 ']' 
+ cd snappy-1.0.5 
+ make 
make: *** No targets specified and no makefile found. Stop. 
ERROR: Command [compile] failed! 
+0

Попробуйте запустить './rebar -vvv compile'. Это должно дать больше информации о том, что происходит не так. – legoscia

+0

Это так, но я не уверен, могу ли я это понять (поможет ли я разместить здесь вывод?). BTW Я уже установил erlang OTP в моей системе Windows. Другая мысль заключается в том, что я могу переключаться между gcc 453 и чем-то еще, возможно, mingw? Текущие CFLAGS: '-mno-cygwin -Wall -O3 -fPIC' – ZeroGraviti

+0

Вы можете отредактировать свой вопрос и заменить более короткий вывод. Боюсь, я понятия не имею о переходе на компилятор. – legoscia

ответ

0

eleveldb-х rebar.config говорит Арматурный выполнить команду c_src/build_deps.sh. Арматура делает это, используя open_port (см. rebar_utils:sh/2), который использует собственные запущенные средства командной строки, а не Cygwin.

Однако, в DOS, и расширением в Windows, c_src/build_deps.sh означает «выполнить команду c_src с переключателем /build_deps.sh», который обычно написан с пробелом перед косой чертой. (См. this answer.) Поскольку c_src - это каталог, это не «внутренняя или внешняя команда, оперативная программа или командный файл».

У меня нет Windows-машины для проверки этого, , поэтому я не буду пытаться угадать, как исправить это. На самом деле, почему бы и нет?

Я пометил этот ответ, как сообщества вики, так что каждый должен чувствовать себя свободным положить в более догадках:

  • Попробуйте изменить "c_src/build_deps.sh" к "sh c_src/build_deps.sh" в rebar.config. Похоже, у вас есть программы Cygwin в вашем PATH, поэтому система должна найти правильное sh.

    • завершается с:

      make: *** No targets specified and no makefile found. 
      
  • Этот сценарий пытается download and build dependencies, так что я предполагаю, что «сделать» не удается для одного из них, но это не совсем понятно, где именно идет не так , Попробуйте изменить крючок на "sh -x c_src/build_deps.sh", который покажет команды при их выполнении.

    • завершается с:

      $ ./rebar compile 
      ==> Entering directory c:/cygwin/home/user1/eleveldb' 
      ==> eleveldb (compile) 
      ++ uname -s 
      + '[' CYGWIN_NT-6.1-WOW64 = SunOS -a '' '!=' true ']' 
      + unset POSIX_SHELL 
      + LEVELDB_VSN=1.3.0 
      + SNAPPY_VSN=1.0.5 
      + set -e 
      ++ basename /home/user1/eleveldb 
      + '[' eleveldb '!=' c_src ']' 
      + cd c_src 
      + BASEDIR=/home/user1/eleveldb/c_src 
      + which gmake 
      + MAKE=make 
      + case "$1" in 
      + '[' '!' -d snappy-1.0.5 ']' 
      + cd snappy-1.0.5 
      + make 
      make: *** No targets specified and no makefile found. Stop. 
      ERROR: Command [compile] failed! 
      
+0

Исправьте меня, если я ошибаюсь, но с тех пор нет пробелов между c_src и slash build_deps.sh в моем файле rebar.config. Я не понимаю, какова ваша точка. Не могли бы вы объяснить? – ZeroGraviti

+0

Это точно. Прямая косая черта отделяет имя команды от переключателей команд, независимо от того, есть ли перед ней пробелы. – legoscia

+0

Хорошо, изменения, которые вы хотите, находятся в разделе 'pre_hooks' или везде в этом' rebar.config'? – ZeroGraviti

Смежные вопросы