$ flex --version flex 2.5.33 $ gcc --version gcc (GCC) 4.3.0 20070904 (experimental) Copyright (C) 2007 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ make : flex scanner.l gcc -g -O2 -DCPP_DEBUG -Wall -Wmissing-prototypes -Wstrict-prototypes -Werror -c -o scanner.o lex.yy.c cc1: warnings being treated as errors lex.yy.c:2127: error: no previous prototype for ‘yyget_lineno’ lex.yy.c:2170: error: no previous prototype for ‘yyset_lineno’
コンパイルできないや (スコア:2, 興味深い)
./configure && make したら、途中で止まっちゃった。
gcc 4.3.0 がいけないのかな。
$ flex --version
flex 2.5.33
$ gcc --version
gcc (GCC) 4.3.0 20070904 (experimental)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ make
:
flex scanner.l
gcc -g -O2 -DCPP_DEBUG -Wall -Wmissing-prototypes -Wstrict-prototypes -Werror -c -o scanner.o lex.yy.c
cc1: warnings being treated as errors
lex.yy.c:2127: error: no previous prototype for ‘yyget_lineno’
lex.yy.c:2170: error: no previous prototype for ‘yyset_lineno’
f77もあるみたいね。
love && peace && free_software
t-nissie
Re:コンパイルできないや (スコア:2, 参考になる)
GCC4 は型宣言に厳しいっすね。
Re:コンパイルできないや (スコア:3, 興味深い)
$ tar zxf pcc-current.tgz
$ cd pcc-0.9.8
$ rm -rf `find . -type d -name CVS`
$ emacs cc/cpp/Makefile.in cc/ccom/Makefile.in os/linux/ccconfig.h # 下のように編集
$ ./configure --prefix=/usr/local/pcc
$ make
$ make -n install
$ su
# mkdir -p /usr/local/pcc/bin
# mkdir -p /usr/local/pcc/libexec
# make install
PCCの作者より上手にMakefileを書いたり、autotoolsを使う自信はあるぞ。。。
f77はコンパイルされないみたい。
$ cat hello.c
/* hello.c */
int main(void)
{
printf("Hello World!\n");
return 0;
}
$ /usr/local/pcc/bin/pcc hello.c
$ ./a.out
Hello World!
$
#include <stdio.h> は付けるとダメ
$ diff -u cc/cpp/Makefile.in~ cc/cpp/Makefile.in
--- cc/cpp/Makefile.in~ 2007-01-02 14:49:40.000000000 -0500
+++ cc/cpp/Makefile.in 2007-09-17 20:57:43.000000000 -0400
@@ -2,7 +2,7 @@
#
# Makefile.in for cpp
#
-XFL=-DCPP_DEBUG -Wall -Wmissing-prototypes -Wstrict-prototypes -Werror
+XFL=-DCPP_DEBUG -Wall -Wstrict-prototypes -Werror
prefix = @prefix@
exec_prefix = @exec_prefix@
$ diff -u cc/ccom/Makefile.in~ cc/ccom/Makefile.in
--- cc/ccom/Makefile.in~ 2005-05-14 10:08:01.000000000 -0400
+++ cc/ccom/Makefile.in 2007-09-17 20:57:24.000000000 -0400
@@ -3,7 +3,7 @@
# Makefile.in for ccom
#
XFL=-DPCC_DEBUG -DGCC_COMPAT \
- -Wall -Wmissing-prototypes -Wstrict-prototypes -Werror
+ -Wall -Wstrict-prototypes
CC = @CC@
CFLAGS = @CFLAGS@ $(XFL) -I. -I${MIPDIR} -I$(MDIR) -Dmach_${TARGMACH} \
$ diff -u os/linux/ccconfig.h~ os/linux/ccconfig.h
--- os/linux/ccconfig.h~ 2007-03-10 03:14:44.000000000 -0500
+++ os/linux/ccconfig.h 2007-09-17 21:29:56.000000000 -0400
@@ -32,12 +32,12 @@
*/
/* common cpp predefines */
-#define CPPADD { "-D__linux__", "-D__ELF__", "-I" INCLUDEDIR "/pcc", NULL, }
+#define CPPADD { "-D__linux__", "-D__ELF__", "-I" INCLUDEDIR "/usr/lib/gcc/i686-pc-linux-gnu/4.3.0/include", NULL, } ???必要???
#define DYNLINKER { "-dynamic-linker", "/lib/ld-linux.so.2", NULL }
#define CRT0FILE "/usr/lib/crt1.o"
-#define STARTFILES { "/usr/lib/crti.o", "/usr/lib/gcc/i586-suse-linux/4.1.0/crtbegin.o", NULL }
+#define STARTFILES { "/usr/lib/crti.o", "/usr/lib/gcc/i686-pc-linux-gnu/4.3.0/crtbegin.o", NULL }
#define LIBCLIBS { "-lc", "-lgcc_s", NULL }
-#define ENDFILES { "/usr/lib/gcc/i586-suse-linux/4.1.0/crtend.o", "/usr/lib/crtn.o", NULL }
+#define ENDFILES { "/usr/lib/gcc/i686-pc-linux-gnu/4.3.0/crtend.o", "/usr/lib/crtn.o", NULL }
#define STARTLABEL "_start"
#if defined(mach_x86)
love && peace && free_software
t-nissie
Re:コンパイルできないや (スコア:3, 参考になる)
gcc をコンパイルするときって、元々あるコンパイラを信用していないというか
stage1: 古いコンパイラで gcc をコンパイル→gccバイナリそのものは古いコンパイラが出力してるので、あてにしたくない
stage2: stage1で出来たgccで、gccをコンパイル→古いコンパイラが出したgccの出力なので、もしかしたらバグってるかも
stage3: stage2で出来たgccで、gccをコンパイル→stage2とstage3の出力を比較してバイナリが一致していれば安心
って流れで、「gccで自身をセルフコンパイル」しますよね。「cc は最適化がとろいし、たまにバグってるので当てにしたくない」って感じでしたっけ。
今時のgccは最適化を強くすると挙動が怪しいとかよく聞きますし、最適化無しのgccは結構遅いコードを吐き出しますから、
gccの最適化無しでpccを作った後、pccで最適化オプションつけてpcc自身をセルフコンパイルぐらいはしてもいいんじゃないかなとか思ってしまいます。
Re:コンパイルできないや (スコア:1)
ふつうのプログラムもうまくコンパイルできません。どっかからヘッダファイル
ひとそろいをダウンロードしてくるのでしょうか。
os/linux/ccconfig.hのCPPADDは
#define CPPADD { "-D__linux__", "-D__ELF__", "-I" INCLUDEDIR "/pcc", NULL, }
だと、-I$PREFIX/include/pcc になるみたいです。
love && peace && free_software
t-nissie
Re:コンパイルできないや (スコア:0)
「ドッグフードを食べる」的な意味合いもあるかもしれません。あと、問題が起きたときに、原因を絞ることができそう。
それに、「自分自身をコンパイルできるようになる」のは漢のロマンですし。
Re:コンパイルできないや (スコア:0)