[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-devel:08952] Re: Failed packages to build for sparc-jp recently.
<14121.9642.468798.29929M@xxxxxxxxxxxxxxxxxxxxx>の記事において
ukai@debian.or.jpさんは書きました。
>> > : iotool.c:28: initializer element is not constant
>> >
>> > となって止まっているのですが、ここは
>> >
>> > : FILE *Cha_stderr = stderr;
>> >
>> > となっています。sparcのlibcのstderrはconstantじゃないんでしょうか?
>>
>> これは glibc2.1 問題だと思います。
glibc2.1のFAQに記述がありました。
: 3.9. I get compiler messages "Initializer element not constant" with
: stdin/stdout/stderr. Why?
:
: {RM,AJ} Constructs like:
: static FILE *InPtr = stdin;
:
: lead to this message. This is correct behaviour with glibc since stdin is
: not a constant expression. Please note that a strict reading of ISO C does
: not allow above constructs.
:
: One of the advantages of this is that you can assign to stdin, stdout, and
: stderr just like any other global variable (e.g. `stdout = my_stream;'),
: which can be very useful with custom streams that you can write with libio
: (but beware this is not necessarily portable). The reason to implement it
: this way were versioning problems with the size of the FILE structure.
:
: To fix those programs you've got to initialize the variable at run time.
: This can be done, e.g. in main, like:
:
: static FILE *InPtr;
: int main(void)
: {
: InPtr = stdin;
: }
:
: or by constructors (beware this is gcc specific):
:
: static FILE *InPtr;
: static void inPtr_construct (void) __attribute__((constructor));
: static void inPtr_construct (void) { InPtr = stdin; }
# ISO Cに反しているとは知りませんでした。
>> なので fix しないと potato で compile できないのでは?
了解しました。上流にも報告しておきます。
# ってもうchasen2.0b6が出てる... しかも辞書の形式が変わってる...
--
野首 貴嗣
E-mail: knok@xxxxxxxxxxxxx, knok@xxxxxxxxxxxxxxxx (private)
nokubi@xxxxxxxxx (official)
knok@xxxxxxxxxxxxx (Isoternet)