下载
开发软件
账户
下载
开发软件
登录
我忘记用户名和密码了
创建帐户
语言
帮助
语言
帮助
×
登录
登录名
密码
×
我忘记用户名和密码了
简体中文翻译状态
类别:
软件
用户
PersonalForge
Magazine
Wiki
搜索
OSDN
>
浏览软件
>
Text Editors
>
Text Processing
>
skf - simple kanji filter
>
Ticket List/Search
>
任务单 #8746
skf - simple kanji filter
描述
项目概述
开发人员仪表板
项目的网页
开发人员
Image Gallery
List of RSS Feeds
Activity
统计
历史
下载
List of Releases
统计
源代码
Code Repository list
CVS
查看仓库
任务单
Ticket List
里程碑列表
Type List
组件列表
List of frequently used tickets/RSS
Submit New Ticket
文档
沟通
List of Forums
帮助论坛 (3)
公开讨论 (12)
新闻
任务单 #8746
Ticket List
Submit New Ticket
RSS
MinGW32 でコンパイルに失敗する
开放日期:
2006-08-02 07:28
最后更新:
2006-09-24 23:28
monitor
ON
OFF
报告人:
naruse
属主:
efialtes
类型:
Bugs
状态:
关闭
组件:
(无)
里程碑:
(无)
优先:
5 - Medium
严重性:
5 - Medium
处理结果:
Fixed
文件:
无
Details
回复
MinGW32 でコンパイルに失敗します。
まず、sleep がないと言われます。windows.h に Sleep が
あるようなので、MinGW32 の場合はそちらを使うのは一案で
しょう。skf_sleep が定義しっぱなしだったので使ってみる
場合は以下の通り
diff -u -r1.15 skf_fileio.c
--- skf_fileio.c 23 Jul 2006 06:06:16 -
0000 1.15
+++ skf_fileio.c 1 Aug 2006 21:41:05 -0000
@@ -43,7 +43,12 @@
#include "skf.h"
#include "skf_fileio.h"
+#if defined(__MINGW32__)
+#include <windows.h>
+#define skf_sleep Sleep
+#else
#define skf_sleep sleep
+#endif
int hold_size = 0;
@@ -156,7 +161,7 @@
if (errno != EAGAIN) {
return(sEOF);
} else {
- sleep(1); /* do not exhaust CPU
time */
+ skf_sleep(1); /* do not exhaust CPU
time */
};
};
skf_fpntr = 0;
次に Ruby Extension のコンパイルで、time 関連の再定義
を怒られます。思うに、extension では include する必要
がないかと。
diff -u -r1.9 skf_convert.i
--- skf_convert.i 19 Jul 2006 13:02:47 -
0000 1.9
+++ skf_convert.i 1 Aug 2006 22:15:05 -0000
@@ -48,7 +48,6 @@
#include <unistd.h>
#include <errno.h>
-#include <sys/time.h>
#ifdef HAVE_STRING_H
#include <string.h>
また、ruby 関連ファイルの位置が意図した場所にない場合
に弱いように感じます。extconf.rb を使えば複雑なことは
ないのですが、使わない場合は以下の通り。
まず、find-ruby が手元の find.exe は find hoge\nfuga
を正しく処理できませんでした。どうせ ruby を叩くのです
から、ruby に聞いたほうが早いでしょうまた、libruby の
位置(というか呼び出し方)も ruby に聞けば楽です。今
は LIBSTDRUBY と RUBYLIBを併用していますが、これも統合
可能かと。以上の変更を施した場合は以下の通り。
diff -u -r1.25 Makefile.in
--- Makefile.in 29 Jul 2006 06:09:44 -0000 1.25
+++ Makefile.in 1 Aug 2006 22:18:16 -0000
@@ -209,10 +209,9 @@
# srcdir
#
SRCDIR = .
-LIBSTDRUBY = @llibruby@
LIBSTDPERL = @llibperl@
PERLLIB = @perl_extlib@
-RUBYLIB = @ruby_extlib@
+LIBRUBYARG = @llibruby@
POS_INDEP_FLAG = @config_pos_indep@
#LINTOPT = -s -Aa
@@ -414,7 +413,7 @@
_rubyext: swigdef _rubyswigglue $(INCLUDES)
$(DYN_SRCS) $(GENSRCS) $(OBJS)
$(CC) -I$(RUBY_INCLUDE_DIR)
$(CFLAGS) -c $(SWIGGSRC) -o $(SWIGGO
BJ)
$(LINK) -shared $(LDFLAGS) -
L$(RUBY_INCLUDE_DIR) \
- $(OBJS) $(LIBS) $(LIBSTDRUBY)
$(SWIGGOBJ) \
+ $(OBJS) $(LIBS) $(SWIGGOBJ) \
-o $(RUBYEXT) $(LIBRUBYARG)
linttest: $(INCLUDES) $(GENSRCS) uni_table.c
in_code_table.h
diff -u -r1.15 configure.ac
--- configure.ac 29 Jul 2006 06:09:44 -
0000 1.15
+++ configure.ac 1 Aug 2006 22:18:16 -0000
@@ -81,8 +81,6 @@
AC_MSG_CHECKING([if we are building on cygwin])
AC_MSG_RESULT($CYGWIN)
if test "$CYGWIN" = "yes"; then
- ruby_extlib="/lib/libruby.dll.a"
- AC_SUBST(ruby_extlib)
config_pos_indep=""
fi
AC_SUBST(config_pos_indep)
@@ -112,9 +110,9 @@
AC_CHECK_PROGS(SWIG, swig, :)
AC_CHECK_PROGS(RUBY, ruby, false)
if test "$ruby" != "false"; then
- ruby_headers_dir=`scripts/find-ruby`
+ ruby_headers_dir=`ruby -rrbconfig -e'puts
Config::CONFIG.fetch("archdir")'`
AC_SUBST(ruby_headers_dir)
- AC_CHECK_LIB(ruby,main,llibruby="-lruby")
+ llibruby=`ruby -rrbconfig -e'puts
Config::CONFIG.fetch("LIBRUBYARG")'`
AC_SUBST(llibruby)
ruby_binary="skf.so"
if test "$CYGWIN" = "yes"; then
任务单历史 (3/10 Histories)
Show older Histories
2006-08-03 22:53
Updated by:
efialtes
属主
Update from
(无)
to
efialtes
2006-08-20 18:54
Updated by:
efialtes
评论
回复
Logged In: YES
user_id=3309
1.94b1c で一応取り込みました。
(1) これ以外に MinGW on cygwin で stat.h で転ける、setbuffer
がないと言われる、の二件を修正。
(2) LIBRUBYARG は Mac OS X 1.3.x(Ruby 1.6) でアヤシゲな結果を
返したので、取り敢えず黙らせる。この関係で LIBSTDRUBY と
RUBYLIB の統合は取りやめ。
2006-08-22 20:35
Updated by:
naruse
评论
回复
Logged In: YES
user_id=3487
取り込み有難うございます。
で、書き忘れたのですが、MinGW32では、
-o skf.so -lmsvcrt-ruby19
という順序、つまり、RUBYLIB に -lmsvcrt-ruby19 を
入れないといけないようです。
手元ではMakefileを直接いじるとコンパイルは通るようになりま
した。
2006-08-23 17:08
Updated by:
naruse
评论
回复
Logged In: YES
user_id=3487
configure.ac v1.22 で、Cygwin/MinGW32 ならばenable-mingwは
yesになりえますが、MSYS/MinGW32の場合は通常常にnoだと思いま
す。
また、Cygwinでruby_extlib="/lib/libruby.dll.a"はパスが決め
うちな点と、MinGWで-lmsvcrt-ruby19とバージョンが決めうちな
点 (ruby 1.8だとlmsvcrt-ruby18) は=`ruby -rrbconfig -
e'puts Config::CONFIG.fetch("LIBRUBYARG")'`の結果を使った方
がよいかと。
あと、Mac OS X で ruby 1.6 なものは切ってしまってよいかと。
1.8と1.9だけサポートすれば問題ないと思います。(1.6はもうメ
ンテナンスされていないので)
2006-09-01 00:18
Updated by:
efialtes
评论
回复
Logged In: YES
user_id=3309
環境依存でまるで動かないというか……
とりあえず Ruby forge の One-Click Ruby Installer を入れた環境
だと、-lmsvcrt-ruby18 は全然うごかない模様です。直接ライブラリ
名をフルパスで指定して足し込まないと駄目の模様。b1i で再度直し
ます (そういう風に)。MinGW って全然使ってない環境なので、どう
するのが妥当なのかすら判然としない。
MacOS の Ruby 1.6 は現役なので当面切れません。
2006-09-02 22:25
Updated by:
naruse
评论
回复
Logged In: YES
user_id=3487
configure.ac の 174 行目と 192 行目で flags をとっています
が、
まず、192 行目は perl がないのに perl を使っているのでバグ
かと。
また、ruby と perl で要求される flags がことなる場合を考え
ると、
両者別々に取ったほうがいい気がします。
2006-09-23 12:33
Updated by:
efialtes
处理结果
Update from
无
to
Fixed
2006-09-24 23:28
Updated by:
efialtes
Ticket Close date
is changed to
2006-09-24 23:28
状态
Update from
开启
to
关闭
2006-09-24 23:28
Updated by:
efialtes
Ticket Close date
is changed to
2006-09-24 23:28
2006-09-24 23:28
Updated by:
efialtes
Ticket Close date
is changed to
2006-09-24 23:28
Attachment File List (
0
)
Attachment File List
No attachments
编辑
Add Comment
You are not logged in.
I you are not logged in, your comment will be treated as an anonymous post. »
登录名
Add Comment
预览
Submit
まず、sleep がないと言われます。windows.h に Sleep が
あるようなので、MinGW32 の場合はそちらを使うのは一案で
しょう。skf_sleep が定義しっぱなしだったので使ってみる
場合は以下の通り
diff -u -r1.15 skf_fileio.c
--- skf_fileio.c 23 Jul 2006 06:06:16 -
0000 1.15
+++ skf_fileio.c 1 Aug 2006 21:41:05 -0000
@@ -43,7 +43,12 @@
#include "skf.h"
#include "skf_fileio.h"
+#if defined(__MINGW32__)
+#include <windows.h>
+#define skf_sleep Sleep
+#else
#define skf_sleep sleep
+#endif
int hold_size = 0;
@@ -156,7 +161,7 @@
if (errno != EAGAIN) {
return(sEOF);
} else {
- sleep(1); /* do not exhaust CPU
time */
+ skf_sleep(1); /* do not exhaust CPU
time */
};
};
skf_fpntr = 0;
次に Ruby Extension のコンパイルで、time 関連の再定義
を怒られます。思うに、extension では include する必要
がないかと。
diff -u -r1.9 skf_convert.i
--- skf_convert.i 19 Jul 2006 13:02:47 -
0000 1.9
+++ skf_convert.i 1 Aug 2006 22:15:05 -0000
@@ -48,7 +48,6 @@
#include <unistd.h>
#include <errno.h>
-#include <sys/time.h>
#ifdef HAVE_STRING_H
#include <string.h>
また、ruby 関連ファイルの位置が意図した場所にない場合
に弱いように感じます。extconf.rb を使えば複雑なことは
ないのですが、使わない場合は以下の通り。
まず、find-ruby が手元の find.exe は find hoge\nfuga
を正しく処理できませんでした。どうせ ruby を叩くのです
から、ruby に聞いたほうが早いでしょうまた、libruby の
位置(というか呼び出し方)も ruby に聞けば楽です。今
は LIBSTDRUBY と RUBYLIBを併用していますが、これも統合
可能かと。以上の変更を施した場合は以下の通り。
diff -u -r1.25 Makefile.in
--- Makefile.in 29 Jul 2006 06:09:44 -0000 1.25
+++ Makefile.in 1 Aug 2006 22:18:16 -0000
@@ -209,10 +209,9 @@
# srcdir
#
SRCDIR = .
-LIBSTDRUBY = @llibruby@
LIBSTDPERL = @llibperl@
PERLLIB = @perl_extlib@
-RUBYLIB = @ruby_extlib@
+LIBRUBYARG = @llibruby@
POS_INDEP_FLAG = @config_pos_indep@
#LINTOPT = -s -Aa
@@ -414,7 +413,7 @@
_rubyext: swigdef _rubyswigglue $(INCLUDES)
$(DYN_SRCS) $(GENSRCS) $(OBJS)
$(CC) -I$(RUBY_INCLUDE_DIR)
$(CFLAGS) -c $(SWIGGSRC) -o $(SWIGGO
BJ)
$(LINK) -shared $(LDFLAGS) -
L$(RUBY_INCLUDE_DIR) \
- $(OBJS) $(LIBS) $(LIBSTDRUBY)
$(SWIGGOBJ) \
+ $(OBJS) $(LIBS) $(SWIGGOBJ) \
-o $(RUBYEXT) $(LIBRUBYARG)
linttest: $(INCLUDES) $(GENSRCS) uni_table.c
in_code_table.h
diff -u -r1.15 configure.ac
--- configure.ac 29 Jul 2006 06:09:44 -
0000 1.15
+++ configure.ac 1 Aug 2006 22:18:16 -0000
@@ -81,8 +81,6 @@
AC_MSG_CHECKING([if we are building on cygwin])
AC_MSG_RESULT($CYGWIN)
if test "$CYGWIN" = "yes"; then
- ruby_extlib="/lib/libruby.dll.a"
- AC_SUBST(ruby_extlib)
config_pos_indep=""
fi
AC_SUBST(config_pos_indep)
@@ -112,9 +110,9 @@
AC_CHECK_PROGS(SWIG, swig, :)
AC_CHECK_PROGS(RUBY, ruby, false)
if test "$ruby" != "false"; then
- ruby_headers_dir=`scripts/find-ruby`
+ ruby_headers_dir=`ruby -rrbconfig -e'puts
Config::CONFIG.fetch("archdir")'`
AC_SUBST(ruby_headers_dir)
- AC_CHECK_LIB(ruby,main,llibruby="-lruby")
+ llibruby=`ruby -rrbconfig -e'puts
Config::CONFIG.fetch("LIBRUBYARG")'`
AC_SUBST(llibruby)
ruby_binary="skf.so"
if test "$CYGWIN" = "yes"; then