Можно ли использовать оболочку shed на Cygwin (execinfo.h отсутствует при установке libgc)?
Я хотел попробовать скинуть кожу на Cygwin.
Установка скинов скина и libgc вроде бы нормально, но когда я пытался make
скриптовый скрипт Python, он жалуется:
/usr/lib/python2.7/site-packages/shedskin/lib/builtin.hpp:31:22: fatal error: execinfo.h: No such file or directory
compilation terminated.
(полный список ниже)
Я проверил список установленных файлов на Cygwin для libgc, и он не включает execinfo.h
Означает ли это, что скиновая кожа не может быть использована на Cygwin?
$ Make
g++ -O2 -march=native -Wno-deprecated -I. -I/usr/lib/python2.7/site-packages/shedskin/lib -g -fPIC -D__SS_BIND -I/usr/include/python2.7 -I/usr/include/python2.7 /home/Administrator/python/shedskin/shedskinfn.cpp /usr/lib/python2.7/site-packages/shedskin/lib/re.cpp /usr/lib/python2.7/site-packages/shedskin/lib/builtin.cpp -lgc -lpcre -shared -Xlinker -export-dynamic -ldl -lpython2.7 -o shedskinfn.so
/home/Administrator/python/shedskin/shedskinfn.cpp:1:0: warning: -fPIC ignored for target (all code is position independent)
#include "builtin.hpp"
^
In file included from /home/Administrator/python/shedskin/shedskinfn.cpp:1:0:
/usr/lib/python2.7/site-packages/shedskin/lib/builtin.hpp:31:22: fatal error: execinfo.h: No such file or directory
compilation terminated.
/usr/lib/python2.7/site-packages/shedskin/lib/re.cpp:1:0: warning: -fPIC ignored for target (all code is position independent)
/* Copyright 2005-2011 Mark Dufour and contributors; License Expat (See LICENSE) */
^
In file included from /usr/lib/python2.7/site-packages/shedskin/lib/re.hpp:9:0,
from /usr/lib/python2.7/site-packages/shedskin/lib/re.cpp:3:
/usr/lib/python2.7/site-packages/shedskin/lib/builtin.hpp:31:22: fatal error: execinfo.h: No such file or directory
compilation terminated.
/usr/lib/python2.7/site-packages/shedskin/lib/builtin.cpp:1:0: warning: -fPIC ignored for target (all code is position independent)
/* Copyright 2005-2011 Mark Dufour and contributors; License Expat (See LICENSE) */
^
In file included from /usr/lib/python2.7/site-packages/shedskin/lib/builtin.cpp:3:0:
/usr/lib/python2.7/site-packages/shedskin/lib/builtin.hpp:31:22: fatal error: execinfo.h: No such file or directory
compilation terminated.
Makefile:17: recipe for target 'shedskinfn.so' failed
Make: *** [shedskinfn.so] Error 1
РЕДАКТИРОВАТЬ 1:
Добавление отсутствующего файла execinfo.h ( загруженного из Интернета) к пути lib для make не помогает.
$ shedskin -L `pwd` shedskinfn.py && make
*** SHED SKIN Python-to-C++ Compiler 0.9.4 ***
Copyright 2005-2011 Mark Dufour; License GNU GPL version 3 (See LICENSE)
[analyzing types..]
********************************100%
[generating c++ code..]
[elapsed time: 2.43 seconds]
g++ -O2 -march=native -Wno-deprecated -I. -I/usr/lib/python2.7/site-packages/shedskin/lib -I/home/Administrator/python/shedskin /home/Administrator/python/shedskin/shedskinfn.cpp /usr/lib/python2.7/site-packages/shedskin/lib/re.cpp /usr/lib/python2.7/site-packages/shedskin/lib/builtin.cpp -lgc -lpcre -o shedskinfn
In file included from /usr/lib/python2.7/site-packages/shedskin/lib/builtin.cpp:147:0:
/usr/lib/python2.7/site-packages/shedskin/lib/builtin/format.cpp: In function '__shedskin__::str* __shedskin__::do_asprintf_str(const char*, __shedskin__::str*, __shedskin__::pyobj*, __shedskin__::pyobj*)':
/usr/lib/python2.7/site-packages/shedskin/lib/builtin/format.cpp:93:104: error: 'asprintf' was not declared in this scope
x = asprintf(&d, fmt, ((int)(((int_ *)a1)->unit)), ((int)(((int_ *)a2)->unit)), s->unit.c_str());
^
/usr/lib/python2.7/site-packages/shedskin/lib/builtin/format.cpp:95:75: error: 'asprintf' was not declared in this scope
x = asprintf(&d, fmt, ((int)(((int_ *)a1)->unit)), s->unit.c_str());
^
/usr/lib/python2.7/site-packages/shedskin/lib/builtin/format.cpp:97:46: error: 'asprintf' was not declared in this scope
x = asprintf(&d, fmt, s->unit.c_str());
^
/usr/lib/python2.7/site-packages/shedskin/lib/builtin/format.cpp: In instantiation of '__shedskin__::str* __shedskin__::do_asprintf(const char*, T, __shedskin__::pyobj*, __shedskin__::pyobj*) [with T = int]':
/usr/lib/python2.7/site-packages/shedskin/lib/builtin/format.cpp:129:91: required from here
/usr/lib/python2.7/site-packages/shedskin/lib/builtin/format.cpp:70:21: error: 'asprintf' was not declared in this scope
x = asprintf(&d, fmt, ((int)(((int_ *)a1)->unit)), ((int)(((int_ *)a2)->unit)), t);
^
/usr/lib/python2.7/site-packages/shedskin/lib/builtin/format.cpp:72:21: error: 'asprintf' was not declared in this scope
x = asprintf(&d, fmt, ((int)(((int_ *)a1)->unit)), t);
^
/usr/lib/python2.7/site-packages/shedskin/lib/builtin/format.cpp:74:21: error: 'asprintf' was not declared in this scope
x = asprintf(&d, fmt, t);
^
/usr/lib/python2.7/site-packages/shedskin/lib/builtin/format.cpp: In instantiation of '__shedskin__::str* __shedskin__::do_asprintf(const char*, T, __shedskin__::pyobj*, __shedskin__::pyobj*) [with T = double]':
/usr/lib/python2.7/site-packages/shedskin/lib/builtin/format.cpp:136:93: required from here
/usr/lib/python2.7/site-packages/shedskin/lib/builtin/format.cpp:70:21: error: 'asprintf' was not declared in this scope
x = asprintf(&d, fmt, ((int)(((int_ *)a1)->unit)), ((int)(((int_ *)a2)->unit)), t);
^
/usr/lib/python2.7/site-packages/shedskin/lib/builtin/format.cpp:72:21: error: 'asprintf' was not declared in this scope
x = asprintf(&d, fmt, ((int)(((int_ *)a1)->unit)), t);
^
/usr/lib/python2.7/site-packages/shedskin/lib/builtin/format.cpp:74:21: error: 'asprintf' was not declared in this scope
x = asprintf(&d, fmt, t);
^
Makefile:17: recipe for target 'shedskinfn' failed
make: *** [shedskinfn] Error 1
1 ответ
Ну, я не знаю никого, кто пытался использовать shedskin на Cygwin прежде, главным образом - я думаю - потому что в какой-то момент была некоторая (ограниченная) поддержка родной Windows.
Тем не менее, проблемы, с которыми вы сталкиваетесь, связаны с некоторыми известными ограничениями самого Cygwin, которые можно как-то смягчить, используя уровень совместимости, такой как Gnulib.
Это может исправить проблему asprintf, хотя это может быть просто отсутствие #include
из stdio.h
где-то.
В любом случае, я не могу гарантировать полную поддержку Cygwin, поскольку я вообще не пользуюсь Windows, но не стесняйтесь отправить электронное письмо по адресу shedskin-discuss@googlegroups.com - кто-то может захотеть глубже взглянуть на него. Если вы хотите внести некоторые исправления или документацию, ваша помощь очень приветствуется на GitHub.