Compile

r r.trev_@inwind.it
Sat Aug 2 20:27:00 GMT 2008


On 2008年08月02日, Brian Dessent <brian@dessent.net> wrote:
> r wrote:
>>> I'm trying to compile a wonderful program ( command line ) to grab
>> videoes from youtube. It needs newt, a little utility. But when I try to
>> compile this utility I have the follewing errors :
>> ...
>> snackmodule.c:126: error: initializer element is not constant
>> snackmodule.c:126: error: (near initialization for `snackGridType.ob_type')
>> snackmodule.c:168: error: initializer element is not constant
>> snackmodule.c:168: error: (near initialization for `snackFormType.ob_type')
>> snackmodule.c:255: error: initializer element is not constant
>> snackmodule.c:255: error: (near initialization for `snackWidgetType.ob_type')
>> make: *** [_snackmodule_la-snackmodule.lo] Error 1
>>>> Do you know if it is an unrecoverable error ( a limitation of cygwin )
>> that will not permit to install this utility ?
>> In the future, you could save a lot of time on the part of people that
> might wish to help you by either pasting the contents of the above
> mentioned lines or providing a link to the source tarball. Or at the
> very least specify the version you're trying to build. Also, a proper
> subject usually helps.

ok, sorry 
>> The offending construct is this:
>> static PyTypeObject snackFormType = {
> PyObject_HEAD_INIT(&PyType_Type)
>> PyType_Type is an object declared dllimport in Python.h as it's provided
> by the main python DLL. This is one of those differences between ELF
> and PE, the address of a symbol from a shared library cannot be used as
> a constant initializer in PE. The testcase boils down to this:
>> $ cat >tc.c <<EOF
> extern __attribute__((dllimport)) int fromdll;
>> typedef struct { int *foo; } foo_t;
>> static foo_t foo = { &fromdll };
> EOF
>> $ gcc -c tc.c
> tc.c:5: error: initializer element is not constant
> tc.c:5: error: (near initialization for `foo.foo')
>> A little googling shows that apparently you can supply 0 to this
> HEAD_INIT macro and the field will be initialized with the proper value
> at runtime. Google code search shows some instances where they define a
> macro for this for documentation purposes:
>> #define DEFERRED_ADDRESS(ADDR) 0
> ...
> static PyTypeObject foo = {
> 	PyObject_HEAD_INIT(DEFERRED_ADDRESS(&PyType_Type))
>> So, that would probably be the first workaround I'd try for porting this
> library to PE.
>> Brian

ok Brian, in fact the firs error it is solved so, I'm looking for solve
other problems
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/


More information about the Cygwin mailing list

AltStyle によって変換されたページ (->オリジナル) /