gcjって使ってる人います? at TECH
[2ch|▼Menu]
1:デフォルトの名無しさん
03/03/03 02:56
1なのにsageちゃうあたりがgcj


本家
URLリンク(gcc.gnu.org)


関連:
「GCCについて part2」
スレリンク(tech板)

2:デフォルトの名無しさん
03/03/03 03:00
>>1
sageてても一番上に出てますた

3:デフォルトの名無しさん
03/03/03 03:01

   C#厨が3getです。

    ┏━┓
    ┃C# ┃
  ⊂(`・ω・´⊂⌒`つ≡≡≡(´⌒;


4:デフォルトの名無しさん
03/03/03 03:03

      、ヾ''""ツノ, <ほっしゅ入りまーす
     ミ ・д・ 彡
     "ミ,, , ; ;;::ヾ
       "'''''""


5:デフォルトの名無しさん
03/03/03 03:04
ネイティブコードにコンパイルする意味ってあるのかね。
最近のVMなら十分な速度出てると思うが。

かといって、IOとかGUI系はまだ実装不完全だろ?これ


6:デフォルトの名無しさん
03/03/03 03:06
RMSの自己満(略

7:デフォルトの名無しさん
03/03/03 03:06
>>5
GPLなことに意味があります。
Blackdownの借りをかえさなくてはいけません。

8:デフォルトの名無しさん
03/03/03 03:18
結構サポートされてる・かな?
URLリンク(gcc.gnu.org)

9:デフォルトの名無しさん
03/03/03 03:33
windows 環境での gcj 事始

0. JDK はインストール済みとする。最新の 1.4.1_02 推奨。

1. まず cygwin をインストールしましょう。
Base と Devel カテゴリーをごりっと全部インストールしてください。
cygwin の質問は以下のサイトやスレで。
URLリンク(www.mars.dti.ne.jp)
Cygwin使っている人いますか? part7
スレリンク(unix板)
Cygwin使っている人いますか?
スレリンク(win板)

2. インストールしたら cygwin のシェルで
$gcc -v
と打ってみましょう。
バージョンが 3.x、--enable-languages に java が入っていることを確認してください。


10:デフォルトの名無しさん
03/03/03 03:33
3バッカ

11:デフォルトの名無しさん
03/03/03 03:38
3. プログラムを書いてみましょう。
メモ帳などで以下の簡単なプログラムを作ります。
--- Hello.java
class Hello {
  public static void main(String args[]) {
    System.out.println("hello world");
  }
}

4. コンパイルしてみましょう。
クラスファイルを作成します。-C オプションを指定します。
$gcj -C Hello.java
Hello.class が作成されているはずです。

5. JDK の java コマンドを使って実行してみましょう。
$java Hello
hello world

12:デフォルトの名無しさん
03/03/03 03:43
バイナリ生成はどうするの?

13:デフォルトの名無しさん
03/03/03 03:45
6. 実行ファイルを作ってみましょう。
実行を開始する main メソッドのあるクラスを --main オプションで指定します。
出力するファイル名を -o オプションで指定します。
$gcj --main=Hello -o Hello.exe Hello.java

7. 実行してみましょう。
$./Hello.exe
hello world

apx. gcc 同様最適化の指定もできます。
$gcj -O3 --main=Hello -o Hello.exe Hello.java

14:デフォルトの名無しさん
03/03/03 03:49
/usr/lib/gcc-lib/i686-pc-cygwin/3.2/../../../../i686-pc-cygwin/bin/ld: cannot find -liconv
こんなんでちゃうな。。。ldはあるんだけど。

15:デフォルトの名無しさん
03/03/03 03:54
URLリンク(www.cygwin.com)
ここに書いてあった。失礼

16:デフォルトの名無しさん
03/03/03 03:57
コンパイルとリンクを分ける場合
$gcj -c -o Hello Hello.java
$gcj --main=Hello -o Hello Hello.o

17:デフォルトの名無しさん
03/03/03 04:05
日本語のリテラルをソース中に記述したい場合
→UTF-8 で保存する

18:デフォルトの名無しさん
03/03/03 04:08
GCJ と SWT で Linux ネイティブアプリを作るお話

Create native, cross-platform GUI applications
--How GCJ, Linux, and the SWT come together to solve the Java UI conundrum
URLリンク(www-106.ibm.com)

cygwin でもできそうな気はするが。

19:デフォルトの名無しさん
03/03/03 04:21
Java using SWT and GCJ 3.2 for Win32
URLリンク(gcc.gnu.org)

cygwin じゃなくて mingw で gcj したい人向け
How to build GCJ for Windows
URLリンク(ranjitmathew.tripod.com)

この辺は試してない。

20:デフォルトの名無しさん
03/03/03 04:32
>>14の件はlibiconvをインストールしたら上手くいきました。

21:デフォルトの名無しさん
03/03/03 05:06
それにしてもバイナリでっかいねえ。まだまだ最適化に
関してはやることが沢山あるのかな。

22:デフォルトの名無しさん
03/03/03 05:16
少し古いけど首藤さんとこでとったベンチ
URLリンク(www.shudo.net)

23:デフォルトの名無しさん
03/03/03 05:16
>>19 補足
URLリンク(sourceforge.net)
URLリンク(sourceforge.net)

>>21
JRE を内蔵していると考えればこんなもんかと。
strip して upx かければ多少縮まる。

24:デフォルトの名無しさん
03/03/03 05:45
>>23
これさ、オブジェクトファイルは5kなのにバイナリ作ると
一気に2MB,stripかけても1.3MBにもなるのね。
そのくっつく部分をライブラリとしてそとに出せないもんなのかな?

25:デフォルトの名無しさん
03/03/03 08:11
せめてAWTに対応してたらなぁ・・・

26:デフォルトの名無しさん
03/03/03 10:38
>>25
AWT フルサポートしたら Swing も殆ど全部動くでしょ。

27:デフォルトの名無しさん
03/03/03 14:56
>>21
ちゃうちゃう、Javaの標準ライブラリを全部抱えてるから
>>24
できるよ。つか*nix系だとデフォでそーなってる(ハズ)。
win系(cygwin/mingw)で.aから.dllを作る方法はそっち方面探せ。


28:デフォルトの名無しさん
03/03/03 18:40
保守上げ


29:デフォルトの名無しさん
03/03/03 19:37
>>24>>27
Linuxでダイナミックリンクした場合、HelloWorldは5152バイト。

リンクしている共有ライブラリはこんな感じ。

% ldd HelloWorld
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x4002c000)
libgcj.so.2 => /usr/lib/libgcj.so.2 (0x40034000)
libm.so.6 => /lib/i686/libm.so.6 (0x403e8000)
libz.so.1 => /usr/lib/libz.so.1 (0x4040a000)
libdl.so.2 => /lib/libdl.so.2 (0x40418000)
libc.so.6 => /lib/i686/libc.so.6 (0x42000000)
libgcjgc.so.1 => /usr/lib/libgcjgc.so.1 (0x4041b000)
libpthread.so.0 => /lib/i686/libpthread.so.0 (0x40447000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

30:デフォルトの名無しさん
03/03/03 22:49
cygwin 版は -shared を無視されるっぽい。
mingw 版は動的リンクできるのかな。


31:デフォルトの名無しさん
03/03/05 22:22
cygwin 上で gcc をビルドしようと試みたが、
case-insensitive bug なる問題で gcj がビルドできなかった。
どうやら case-sensitive なファイルシステム上でクロスコンパイルしてやらないとダメらしい。

32:デフォルトの名無しさん
03/03/05 23:52
どうでもいいが、gcjよりgjcのほうが名称として適当な気がする、、、

33:デフォルトの名無しさん
03/03/06 14:57
Gnu Compiler for Java

34:デフォルトの名無しさん
03/03/07 07:47
>>29>>30
libgcjを共有ライブラリにした場合
HelloWorld(strip)
mingw : 12800
cygwin: 11776
Helloswt/mingw
static: 3453952
gcjのみdll: 1565696
gcj/swtをdll: 12824


35:デフォルトの名無しさん
03/03/08 20:15
>>34
情報さんくす

36:デフォルトの名無しさん
03/03/08 22:31
>>30
MinGW のとこに置いてあったバイナリだと無理っす。
gcj -v の出力

Configured with: /extra/src/gcc/gcc-3.2/configure --prefix=/extra/wingcc --build
=i686-pc-linux-gnu --host=mingw32 --target=mingw32 --enable-languages=c,c++,java
--with-gcc --with-gnu-as --with-gnu-ld --with-as=/extra/xgcc/bin/mingw32-as --w
ith-ld=/extra/xgcc/bin/mingw32-ld --enable-threads=win32 --disable-nls --disable
-win32-registry --disable-shared --disable-debug --disable-multilib --without-ne
wlib --enable-libgcj --disable-java-awt --without-x --enable-java-gc=boehm --dis
able-libgcj-debug --enable-interpreter --enable-hash-synchronization
Thread model: win32
gcc version 3.2 (mingw special 20020817-1)

37:34
03/03/10 06:57
>>30,>>36
34はコンパイラ自体はcygwin,mingw標準のものです。

gcjコンパイラバイナリは関係ないす。共有ライブラリ(のインポートライブラリ)があるかどうか。
で.aから.dllを作るには基本的にはバラして再リンクすればいいわけだが、.aと.dllの挙動の違い
(ライブラリ側にdeclspec(dllexport)または.defが、使う側にdeclspec(dllimport)が必要など)
をldで自動的に吸収するために、リンク時にオプションで小細工が必要。

この辺参照。
URLリンク(gcc.gnu.org)
なおcygwinではpseudo-reloc.cは不要。

とここまでふっといてgcjを常用してるかっつーとためしにやってみたダケなんだが。

38:デフォルトの名無しさん
03/03/15 02:46
zip -d *AWT* swt.jar
でAWT関係のクラスを削除したswt.jarをmingwのGCJでコンパイルすると
unreachable bytecode from...っていう警告がたくさん出てくるのですが、オブジェクトファイルはできてるんです
これで大丈夫なんでしょうか?


39:デフォルトの名無しさん
03/03/15 02:54
>>38
たぶん大丈夫でしょ。到達不能な部分があるってだけの話だから。
その警告は特定バージョンのための条件分岐とかあると絶対出てくるので。

40:38
03/03/15 03:27
>>39
ありがとうございます、とりあえずこのまま使ってみます

41:38
03/03/15 09:58
メモがてらちょこっとインストール解説ページを作ってみたけど
あらためて自分の文才のなさが浮き彫りに(鬱

URLリンク(page.freett.com)

42:デフォルトの名無しさん
03/03/15 21:44
>>41
さんの解説通り
インストールできました

わかりやすかったです

swingで書いたアプリを移植するは
アプリによっては大変ですね
描画をたくさんしていると
awt.ColorとかGraphicsとかを
書き換えないといけないです

いい方法ないでしょうか?

43:42
03/03/15 22:08
すいません
>>42の後半はスレ違いでした


44:デフォルトの名無しさん
03/03/17 04:18
保守

45:デフォルトの名無しさん
03/03/17 14:16
cygwin/mingwでライブラリをdllにするのはどーやるの?

46:デフォルトの名無しさん
03/03/18 00:10
dllwrapとかいうコマンドがあります

47:デフォルトの名無しさん
03/03/18 00:35
gcc に -shared オプションをつける

48:デフォルトの名無しさん
03/03/21 23:18
定期保守

49:tantei
03/03/21 23:19
★あなたのお悩み解決致します!!
●浮気素行調査
彼氏、彼女、妻、夫の浮気を調査致します!!
●盗聴器盗撮機発見
あなたの部屋に誰かが仕掛けているかも!!
●行方調査
行方不明になっている家族の消息を調査致します!!
●電話番号から住所割り出し
一般電話、携帯から住所を割り出し致します!!
●ストーカー対策
社会問題ともなっているストーカーを撃退致します!!
その他人生相談からどんなお悩みでも解決いたします!!
 直通  090−8505−3086
URL  URLリンク(www.h5.dion.ne.jp)
メール  hentaimtt@k9.dion.ne.jp
   グローバル探偵事務局 



50:デフォルトの名無しさん
03/03/26 09:33
質問です。
    _, ._
  ( ゚ Д゚)
  ( つ旦O
  と_)_)

URLリンク(gcc.gnu.org)
を参考にして、libswt.aを作りました。

$ ls
Test.java build.sh* libswt.a swt-win32-2132.dll* swt.jar

$ gcj -mwindows --classpath=./swt.jar --main=Test Test.java -L. -lswt
/cygdrive/c/WINNT/Temp/ccjjEJMB.s: Assembler messages:
/cygdrive/c/WINNT/Temp/ccjjEJMB.s:38: Warning: .stabs: description field '100004' too big, try a different debug format
/cygdrive/c/WINNT/Temp/ccjjEJMB.s:206: Warning: .stabs: description field '10001' too big, try a different debug format


51:デフォルトの名無しさん
03/03/26 09:33

$ ./a.exe
Exception in thread "main" java.lang.UnsatisfiedLinkError: swt-win32-2132: file not found

と、カレントディレクトリにswt-win32-2132があるにも関わらず、file not found になってしまいます。
%SYSTEM_ROOT%/system32/にDLLを突っ込んでも同じでした。
解決策お願いします。

[環境]
Windows2000sp3
$ uname -a
CYGWIN_NT-5.0 rcl 1.3.22(0.78/3/2) 2003-03-18 09:20 i686 unknown unknown Cygwin
$ gcj --version
gcc (GCC) 3.2 20020927 (prerelease)
Copyright (C) 2002 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.


52:デフォルトの名無しさん
03/03/27 20:18
 

53:デフォルトの名無しさん
03/04/05 15:26
Cygwin版もMingw版も出力をShift-JISにしないと日本語がまともに表示できない・・・

54:デフォルトの名無しさん
03/04/05 22:54
>>53
そりはコンソールの表示文字コードの問題かと・・・

55:デフォルトの名無しさん
03/04/05 23:16
>>50-51
だ、誰かつД`) タスケレ !!

56:名無しさん@XEmacs
03/04/06 12:31
>>53
mltermかrxvt-ml使えば? euc-jpもutf-8も可。
どっちもcygwinに入っていると思た
URLリンク(mlterm.sourceforge.net)
URLリンク(www.geocities.co.jp)

>>53
console表示はgcjの担当じゃないもんね(w
出力は担当だけども。

57:53
03/04/09 18:26
環境にあわせてエンコードしてくれるものだと思っていた漏れがバカでした・・・鬱

58:山崎渉
03/04/17 15:40
(^^)

59:デフォルトの名無しさん
03/04/28 20:09
保守sage

60:山崎渉
03/05/28 13:25
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎―◎                      山崎渉

61:デフォルトの名無しさん
03/06/08 04:12
libgcj.dll と libswt.dll の作り方が分かりません。。
dlltool や dllwrap を使ってあれこれやってみたのですが…。

実際に使おうとすると、undefined reference の嵐です。

URLリンク(members.tripod.co.jp)
URLリンク(webclub.kcom.ne.jp)

どなたか、libgcj.a と libswt.a を共有ライブラリにする方法を
教えてください。

62:デフォルトの名無しさん
03/06/24 00:55
3舗U

63:デフォルトの名無しさん
03/06/29 13:59
MinGW GCJ 3.3 で コンソールへの日本語出力 と
MS SQL Server JDBC ドライバのコンパイルはできました。

SWT, JDBC, 日本語 がこなせるので GCJ でも
それなりのアプリケーションを構築できるようになりましたね。

64:デフォルトの名無しさん
03/07/03 19:38
Pure Java なデータベース HSQL をネイティブコードにコンパイルできたよ。
ちゃんと動いているし。


65:デフォルトの名無しさん
03/07/03 21:25
>>63
GCJ3.3って公式ダウンロードサイトにはなかったので
検索したら↓がひっかかったんだけどこれのこと?
URLリンク(www.thisiscool.com)

66:65
03/07/03 21:31
GCJ 3.4もあるみたいなんで早速GCJ 3.4を試してみます

67:デフォルトの名無しさん
03/07/04 23:29
実行時に必要になるオブジェクトやリソースがリンクされないんだけど…。

public static void main(String[] args) {
Calendar.getInstance();
}

これがエラーになるんだよね。どのカレンダー実装を使うかは
実行時に判断されるため、リソースオブジェクトがリンク時には
リンクされないのだ。

ar x libgcj.a Calendar.o

として、リソースオブジェクトを取り出して、

gcj --main=Hello -o Hello.exe Hello.java Calendar.o

のように直接リソースオブジェクトを指定すれば、正しくリンクされて
きちんと動作する。他にも Input_SJIS.o や Output_SJIS.o などの
文字コードコンバート系 オブジェクトもリンクされないので、
URLリンク(www.thisiscool.com) にある
バイナリでは、デフォルトでコンソールに日本語を表示することができない。

Input_SJIS.o などをリンクするためには、他から静的に参照されてればいいので、
IOConverter.java などで new Input_SJIS(); などとしておけば良い。
そうすれば、リンク時に Input_SJIS.o が必要だということが分かるから、
ちゃんと Input_SJIS.o がリンクされて日本語が通る。

そのうち、構成しなおした libgcj.a でもアップするか…。

68:デフォルトの名無しさん
03/07/12 23:55
>>67
+1 参考になる

69:67
03/07/13 10:33
URLリンク(webclub.kcom.ne.jp)

日本語が通るようにした libgcj.a です。
URLリンク(www.thisiscool.com) にある
MinGW GCJ 3.3 の libgcj.a と差し替えて使います。

ただし、日本語をソースコードに記述する場合は
文字コードを UTF-8 にしておかないと、gcj にはじかれます。
僕は、UTF-8エディタとして Eclipse を使っています。

70:山崎 渉
03/07/15 10:14

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

71:デフォルトの名無しさん
03/07/21 22:38
保守age

72:山崎 渉
03/08/02 02:27
(^^)

73:山崎 渉
03/08/15 16:50
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

74:デフォルトの名無しさん
03/08/18 19:08
>>797=798
これ分かります?書いたの自分なんですけど。

gcjって使ってる人います?
スレリンク(tech板:50-番)

75:デフォルトの名無しさん
03/08/18 19:09
>>74はゴバーク

76:デフォルトの名無しさん
03/08/18 23:00
MinGW用の libgcj のダイナミックライブラリ(dll)が出ました。
MinGW GCJ の欠点として、ライブラリがスタティックリンクされるため、
生成される実行ファイルが非常に巨大になるという問題がありましたけど、
ダイナミックライブラリが出てきたことで、この問題が解消します。

URLリンク(www.thisiscool.net)


77:デフォルトの名無しさん
03/08/18 23:26
>>76
ありがたいっす。

ところで、Windows 用(っつか case sensitive でないプラットフォームの) GCJ は
(case sensitive なプラットフォームで)クロスコンパイルしないとビルドできないのは変わって無いっすか?

78:デフォルトの名無しさん
03/08/20 19:08
おそらくね。メーリングリスト見てても Windows用GCJをコンパイルしている人は
みんな Linux でクロスコンパイルしてるね。
Cygwin でコンパイルに成功した例は聞いたことないです。

79:デフォルトの名無しさん
03/09/23 12:46
GCJってメモリーリークが激しい気がするんだけど。


80:デフォルトの名無しさん
03/09/24 05:13
mingwのサイトにgcj3.3があるね

81:デフォルトの名無しさん
03/10/11 19:47
>>41に書いてる通りにやったんですが、
SWTを使わないものですらネイティブコンパイルができません。
クラスファイルへのコンパイルなら成功してます。

cc1 に対して No Such File or directory エラーが出てたので、
C:\MinGW\lib\gcc-lib\mingw32\3.2.3
にパスを通したんですが、今度は crtbegin.o を開けないと言われました。
上記のディレクトリにファイルは存在するんですが・・・
何が問題なんでしょうか?

環境はこんな感じです。
OS:WinXP
MinGW:MinGW-3.1.0-1.exe
GCJ:gcc-java-3.3.1-20030804-1.tar.gz

82:81
03/10/12 12:15
自己解決しました。
MinGWとgcjで微妙にバージョンが違うのが原因だったみたいです・・・

83:デフォルトの名無しさん
03/10/20 16:03
URLリンク(www.shudo.net)
にも書いてあるけど GCJ の ML で value type (参照型じゃない型) 導入しない?って話が出てます。

84:デフォルトの名無しさん
03/10/21 20:21
gcjでsunのjavax.soundのソースと一緒にコンパイルしたのですが
実行時に
javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input stream
とでてしまいました。
同じソースでjavaでは正常にwaveが再生できたのですが。
InputStreamの実装が違うのでダメなのでしょうか。
ちなみにwaveファイルが無くても同じ例外が出てしまいます。

85:デフォルトの名無しさん
03/10/22 04:31
>>84
javax.sound が使用する DLL とかは調べた?

86:84
03/10/22 12:43
>>85
レスありがとうございます。
jsound.dllだと思います。
コンパイル時にオプション-Lで指定しました。
コンパイル時も実行時もエラーが出ないので
dllまわりはOKだと思うのですが。。


87:デフォルトの名無しさん
03/10/22 17:23
>>84
んじゃ、com.sun.media.sound パッケージが無いとか。

88:84
03/10/22 23:18
>>87
それが原因のようです。
使っているファイルを発見しました。
どうもありがとうございます。
途中経過を報告しますと
rt.jarを使ってコンパイルしようとすると
コンパイラの内部エラーがでます。
もうすこし考えてみます。

89:84
03/10/23 10:56
.oファイルを作ろうとjarをコンパイル中に
たくさん
com/sun/media/sound/SunMidiFileWriter.java:124: warning: exception handler insid
e code that is being protected
のようなwarningが出て止まります。
これは何が悪いのでしょう?

90:デフォルトの名無しさん
03/10/23 16:55
>>89
"warning: exception handler inside code that is being protected" でぐぐったら

URLリンク(gcc.gnu.org)

が見つかった。

適当な日本語訳
> 全てのJavaバイトコードがJavaコンパイラで生成されている
> わけではなく、それらの幾つかは非常に奇妙なものかもしれない。
> 私は Java Server Pages 用の特別なコンパイラで、例外ハンドラが
> 再帰的に自分自身を呼び出すというインチキにしか見えないコードを
> 生成するのを見たことがある。これは正常に動作しないだろうが
> (それとも正常に動くのか?)、Javaバイトコード仕様に完全に従っている。
> よって、このようなバイトコードを許すが、警告を出す事にする。

91:デフォルトの名無しさん
03/10/23 17:06
URLリンク(www.scheinwelt.at)
で似たようなもの(?)を作ってる人がいるらしいので参考にしてみては?

その人の gcj のメーリングリストへの投稿
URLリンク(gcc.gnu.org)

92:84
03/10/23 18:43
>>90
>>91
親切にレスしてくださって、
ありがとうございます。
早速、参考にして調べてます。


93:デフォルトの名無しさん
03/10/24 01:28
>>81

自分も同じ問題がおきたんですが同じバージョンのMinGWとGCJがあるんでしょうか?
探してみたんですけど見つけられなかったんですが・・・

94:81
03/10/25 01:48
>>93
バージョンが書いてないのでなんとも言えないけど、GCJ3.3.1なら
下のサイトにあるMinGW base kit, bitWalk build #037をいれたらいけたよ。
URLリンク(b2c-1.rocketbeach.com)

95:93
03/10/25 03:57
>>94

レスありがとうございます。

紹介していただいたサイトのminGWをインストールし、
38さんの解説ページ通りにSWTを使ったプログラムをコンパイルできました。

96:デフォルトの名無しさん
03/11/22 16:31
保守

97:デフォルトの名無しさん
03/11/25 01:03
URLリンク(page.freett.com)

>>67を参考にコンソールに日本語を表示することに成功したのでメモを残しておきます
ほとんど>>67の書いていることをそのままな流用したため勝手に載せていいのか判断に迷ったので
このスレ以外にはリンクを張っていません・・・
HTML化は時間があればやります

98:97
03/11/25 01:24
念のためもう一度試してみたらどうも-Dオプションが一つしか認識しないっぽくて
うまくいかなかったので直しました_| ̄|○

99:97
03/11/25 07:47
>>98は勘違いみたいなのでなかったことにしてください_| ̄|○

100:97
03/11/26 02:00
URLリンク(big.freett.com)

gcjで日本語を扱うサンプルをいくつか作ってみました(2.7Mほど)

101:デフォルトの名無しさん
03/11/26 11:34
おつ!

102:67
03/11/26 20:33
こういう、やる気のある人がいるっていうのは良いことだね。

NativeTest の Readme.txt の説明で Input_SJIS.o と Output_SJIS.o を
リンクしているけど、これを不要にするために jni にチャレンジしたんじゃないの?

結局、その試みは失敗しているようだけど…。せっかく jni にしているのに、
C側で CallObjectMethod() を使用して Java側の getBytes() を使っちゃったら
意味ないよね。コード変換を Java側でやることになるから jni の意味がない。

Input_SJIS.o, Output_SJIS.o の問題を回避するために jni を使うのであれば、
jniメソッドで受け取った jstring を GetStringChars で jchar* に変換してから
Win32API の WideCharToMultiByte() に渡してあげるといいよ。
これで、UTF-8 から SJIS に変換できるはず。

103:97 = 41 = 38
03/11/26 21:52
>>102
すみません、説明不足でした
NativeTestは、Javaから渡した日本語の文字列をネイティブ側からString#getBytes()を使ってSJISの文字配列に変換し、
printfで表示できるかどうかを試したサンプルです
これができると移植性を保ちつつJavaとCの間で文字列をやりとりしやすくなるので試してみました

漏れの環境ではうまくいったのですが
うーん、JNIは難しい・・・

104:97 = 41 = 38
03/11/26 22:41
>>97の内容をHTMLにしてアップしました

URLリンク(freett.com)

>>67さん
>>97にも書いたとおり肝心の方法がほぼそのまま>>67を流用したものなんで
勝手に載せていいのか判断に迷っていて今のところこのスレにしかリンクを張っていないんですが、このまま目次(URLリンク(freett.com))からリンク張ってもよろしいでしょうか?

105:67
03/11/26 23:01
>>103 NativeTest はちゃんと動いたよ。ただ、Console/Test.java と
何が違うのか分からない。ただ、JNI でオーバーヘッドを
増やしているだけだと思うんだけど。移植性を保つというのも…。
良かったら、もうちょっと説明してくれませぬか。

それと、なんか気を使われているようだけど、>>97 が自分で
まとめた成果なのだから、自由に Web で公開してかまわないんじゃないか。

GCJ関係のリンクに URLリンク(gcc.gnu.org) があると良いかも。
gcj3.4 のおっかけをするなら必須だと思われ。

106:67
03/11/26 23:14
「CNIではネイティブメソッドごと実行ファイルにリンクすることができます」
って書いてあるけど、GCJ なら JNI 使っても同じことができるよ。

NativeTest で gcc -shared -o NativeTest.dll NativeTest.c とやっているのを
gcc -C -o NativeTest.o NativeTest.c として
Input_SJIS.o なんかと同様に一緒にリンクするだけ。

107:97 = 41 = 38
03/11/27 01:07
>>105
変換した文字配列はprintfに限らずchar*を引数にもつ関数にそのまま渡せるんで本質的にはConsoleとは違います
byte[]を引数にしてgetBytes()したbyte配列を渡してもいいのですが
(今考えるとそのほうがオーバーヘッド少なく済みそうな気もします・・・)
gcjでもJavaのメソッドを呼べるのか試してみたかった気持ちがあったのと
>>97,>>104の方法がJNI経由でも有効なのかどうかを確かめるものなので
ああいうサンプルになりました

説明が下手くそですいません_| ̄|○

> それと、なんか気を使われているようだけど、>>97 が自分で
> まとめた成果なのだから、自由に Web で公開してかまわないんじゃないか。

ありがとうございます
今回はさすがに>>67を書いてあることほぼそのままなんで躊躇ったんですが
目次からリンクを張ることにします

>GCJ関係のリンクに URLリンク(gcc.gnu.org) があると良いかも。
確かにそうですね、このスレやgoogleの検索を参考にしていろいろ試していたので
気づきませんでした。早速リンクしておきます

>>106
CNIについて書いていた頃に試してうまくいかなかった記憶はあるのですが
いつのまにか出来るようになっていたんですね
また時間があれば試してみます

108:97 = 41 = 38
03/11/29 03:37
URLリンク(freett.com)
JNIについてメモを書いてみました
中身はCNIのメモとあまり変わっていないけど・・・_| ̄|○

109:デフォルトの名無しさん
03/12/21 01:42
Redhutの後継のFedora ProjectのFedora Core 2のロードマップで
....more Java software using gcj (Ant, Tomcat, Jakarta, Eclipse, .....
ってあるけど、
URLリンク(fedora.redhat.com)
最近のgcjどうなの?ネイティブ化するとそれなりに高速化されるのだろうか・・・


110:デフォルトの名無しさん
03/12/21 02:51
「D」が出ちゃったから立場が微妙だな...
Javaに似た文法だがあっちはC言語のライブラリ使えるし
テンプレートもあるし。

111:デフォルトの名無しさん
03/12/21 04:15
> Javaに似た文法だが


112:106
03/12/21 12:24
ひさしぶりに来てみた。

>>108
URLリンク(freett.com)
「ただし、SWTを使っているときはうまくネイティブメソッドを実行ファイルにリンクできないようです」
という表記を消しとけよ。まったく…。




113:デフォルトの名無しさん
03/12/21 17:30
gcの実装ってどうなってんの?やっぱ別スレッドが立ってるわけ?
つーか、何処までネイティブなのかいまいち分からんがな。
JavaVM無いと動かないんでしょ?これ


114:デフォルトの名無しさん
03/12/21 17:35
> gcの実装ってどうなってんの?
ソース公開されてんだし、自分で調べれば?

> JavaVM無いと動かないんでしょ?これ
exe 単体で動くけど。

115:デフォルトの名無しさん
03/12/21 18:03
>>114
んなこと言わずに教えてくれよ。


>exe 単体で動くけど。
そうなんだ。


116:115
03/12/21 18:04
>JavaVM無いと動かないんでしょ?これ
つーか>>29見ればわかるか
スマソ

117:デフォルトの名無しさん
03/12/21 18:05
ソースを見るより、gcjの吐いた機械語を見たほうが早いと思われ。

多分、起動時に、libgcjに実装されてるgcスレが立つんじゃないの?


118:デフォルトの名無しさん
03/12/21 19:31
gcjってboehm-gc使ってるって聞いたけど違うの?

119:デフォルトの名無しさん
03/12/24 01:42
誰も使ってないの?

120:デフォルトの名無しさん
03/12/24 01:57
ネイティブコンパイルに魅力を感じないので使ってない。
必要に迫られたら使うあるのみ

121:デフォルトの名無しさん
03/12/24 03:18
>>120
実行環境が何メガもあってバージョン間の相性もあるとなれば
配布にも支障をきたすし、
ベンチマーク取られるようなソフトにはアウト。
これはかなりの障害だよ。
いまどきLinux−MacOSX−Windowsのクロスプラットホーム環境で
ソース互換の開発環境だってあるんだし、SunのJavaが
実行形式吐かないのはゆゆしき問題だよ。

122:デフォルトの名無しさん
03/12/24 14:19
>>121
実行形式ならC++とか使えばいいと思うのだが。

123:デフォルトの名無しさん
03/12/25 00:52
>>121
要は各プラットフォームで共通に使えるGUIライブラリとかがほしいってことじゃないの?

124:デフォルトの名無しさん
03/12/25 01:41
>>122
それだともはやPCではJavaに出る幕はない。
アプレットの動く環境からユーザーは離れつつある。
全部C++でイケルんだよ。

125:デフォルトの名無しさん
03/12/25 22:44
> アプレットの動く環境からユーザーは離れつつある。
アプレットも細々と使われてるけどね。

アプレットの一時的な流行(?)が終わったのは何年も前の話しだし。


126:デフォルトの名無しさん
03/12/25 23:03
Javaはサーバ向けだろもはや。
TigerからはclientVM無くなるって話だし。

127:デフォルトの名無しさん
03/12/25 23:03
GUIが(体感的に)遅いのがマズかったよなー。

128:デフォルトの名無しさん
03/12/25 23:11
あれだけ抽象度が高いGUIをVMでやろうという心意気はいいけど、
盛り込みすぎだよなぁ…。

129:デフォルトの名無しさん
03/12/25 23:11
>>126
1.5.0-beta-b31 の段階では client と server フォルダ両方あるけど。

130:デフォルトの名無しさん
03/12/25 23:13
>>122-129
ここは GCJ スレなのでそーゆー話題は死滅スレにでも逝ってやってください

131:デフォルトの名無しさん
03/12/25 23:22
>>137
サーバーならg++でいいじゃん。
gnu cgiccはマルチパート対応でアップローダも書けるし、
固定長バッファも使用しないから
バッファオーバーフローも起きない。
なによりboostを始めとして開発環境が超強力。

132:デフォルトの名無しさん
03/12/25 23:30
137に期待がかかりました

133:デフォルトの名無しさん
03/12/25 23:34
>>129
あれ?あった?
無いのはIA64版だったかなぁ。失礼。

134:デフォルトの名無しさん
03/12/26 01:24
ネイティブなクロスプラットフォームGUIを作成する(再考)
URLリンク(www-6.ibm.com)

(English >>18)

135:デフォルトの名無しさん
04/01/06 15:08
>>137期待age

136:デフォルトの名無しさん
04/01/06 20:37
だれが>>137や!

137: ◆AEqcy/sQU6
04/01/06 20:49
あたい

138:デフォルトの名無しさん
04/01/06 20:58




           世界は核の炎に包まれた





139:デフォルトの名無しさん
04/01/07 01:29
cygwinでも簡単にgcj使えるね。

URLリンク(freett.com)

の説明のgcjの呼び出しの際に-mno-cygwin付けるだけだった。
↓のような感じ。

gcj --jni -mno-cygwin -c --classpath=swt.jar swt.jar

140:デフォルトの名無しさん
04/01/07 20:44
だれかJFaceでWin32ネイティブコンパイル成功しましたか?
いろいろ試したんですが、ApplicationWindowを使うと即死・・・
Actionのサブクラスなら大丈夫でした。ちなみにWin2K、WinXPです。

あと、これは別なんですがアイコンファイルとかを実行ファイルに
埋め込むことは可能なんですかね?

141:デフォルトの名無しさん
04/01/07 21:38
試してないけどアイコンを定義したrcファイルをwindresでコンパイルしたresをリンクすれば可能だと思う

142:デフォルトの名無しさん
04/01/17 12:35
pooh@linux:/hdc3/data4/java/program> gcj --version
gcj (GCC) 3.3.1 (SuSE Linux)

pooh@linux:/hdc3/data4/java/program> gcj -O3 -static --main=Hello -o Hello.exe Hello.java
/usr/lib/gcc-lib/i586-suse-linux/3.3.1/../../../libgcj.a(natRuntime.o)(.text+0xced): In function `java::lang::Runtime::insertSystemProperties(java::util::Properties*)':
: Using 'getpwuid_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/lib/gcc-lib/i586-suse-linux/3.3.1/../../../libgcj.a(natInetAddress.o)(.text+0x34f): In function `java::net::InetAddress::lookup(java::lang::String*, java::net::InetAddress*, bool)':
: Using 'gethostbyaddr_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/lib/gcc-lib/i586-suse-linux/3.3.1/../../../libgcj.a(natInetAddress.o)(.text+0x244): In function `java::net::InetAddress::lookup(java::lang::String*, java::net::InetAddress*, bool)':
: Using 'gethostbyname_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

pooh@linux:/hdc3/data4/java/program> ./Hello.exe
セグメンテーション違反です

libgcjをスタティックリンクしようとするとエラーになります。
なんで?
ダイナミックリンクだと問題ないんですが?
OSは、Linux2.4.21-166(SuSE)です。

143:デフォルトの名無しさん
04/01/18 03:57
エラーメッセージ見る限りでは今Linuxにあるglibcとlibgcjをビルドしたときに使ったglibcのバージョンが違うってことじゃない?

144:142
04/01/20 08:06
>>143
今、SuSE9.0のデフォルト使ってるんです
ひょっとして、libgcjをりビルドするって
こと?ですか

145:デフォルトの名無しさん
04/01/20 13:49
gcjでバイトコードを生成することもできるの?
それとも、普通にSunのjavac使わないとだめ?

146:デフォルトの名無しさん
04/01/20 13:53
>>145
gcj -Cでバイトコード作ってくれる

147:デフォルトの名無しさん
04/01/20 14:08
>>146
となるとgcjで普通にアプレット作ったりとかも
出来るわけですね。

148:デフォルトの名無しさん
04/01/20 14:29
>>147
うーん、試したことないけどできるんじゃないかな?
実行はブラウザかSunJSRのアプレットビューアーじゃないとダメだろうけど

149:デフォルトの名無しさん
04/01/29 15:27
gcjでJCEを使ったコードをコンパイルしたいのですが何か方法はないでしょうか。
単純にjce.jarをコンパイル使用としてもだめでした。。。

150:デフォルトの名無しさん
04/01/30 01:09
どこで撥ねられてるんだ

151:デフォルトの名無しさん
04/02/28 00:54
age

152:デフォルトの名無しさん
04/03/09 15:57
フルスクリーンアプリ作れますか?

153:デフォルトの名無しさん
04/03/12 18:21
SDLとかOpenGLのラッパ使えば出来るかもね

154:デフォルトの名無しさん
04/03/13 12:31
>>152
java.awt.GraphicsDevice#isFullScreenSupported() がtrueなら
java.awt.GraphicsDevice#setFullScreenWindow(Window w) でフルスクリーン。

>>153
変なこと書かないように。



155:デフォルトの名無しさん
04/03/13 13:11
>>154

156:デフォルトの名無しさん
04/03/13 13:15
>>153
gcj って awt をあんまりサポートしてないのにできるんだ?

157:デフォルトの名無しさん
04/03/13 13:29
JSDL以外で公開されてるJavaのSDLラッパーってある?

158:デフォルトの名無しさん
04/03/13 14:23
>>157
cni使って自分でラップしたら。jni使ったことあるならcniには感動するぞ。

159:デフォルトの名無しさん
04/03/21 13:53
質問します。

>>50-51さんが書かれていた現象と同じ状況に陥っています。
URLリンク(page.freett.com) のやり方に従い、
cygwinを用いてgcjで実行ファイルを作成するところまではできましたが、
実行時に、PATHを通している所にswtのdllを置いても、
Exception in thread "main" java.lang.UnsatisfiedLinkError: swt-win32-2136: file not found
<<No stacktrace available>>
と出てしまい、実行できません。

cygwinでswtの使用がうまく行った方、教えてください。
素直にMingW版gcj/swt
URLリンク(www.thisiscool.com)
を用いたほうがいいのでしょうか。

なにか勘違いしてたらご指摘お願いします。

160:デフォルトの名無しさん
04/03/21 19:31
>>159 自己レスです。

URLリンク(www.thisiscool.net)
あの後上記サイトにあるmingWのgcc/gcj詰め合わせ↑をDL&解凍し、
そちらにPATHを通し再度プログラム生成を行いました。

URLリンク(page.freett.com)
こちらの手順の5. によりswt.oの再生成をおこない、
6.を実行するとできました。ただ、cygwinのシェル上から実行しても
ディレクトリ指定がうまくできず、同じディレクトリにswt.jar,swt.oを置いて行いました。

続けて、
ネイティブなクロスプラットフォームGUIアプリケーションを作成する (再考)
URLリンク(www-6.ibm.com)
の手順に沿って、j-nativegui2.zip内のサンプルをAntを利用してビルドを行ってみました。
こちらもうまく行きました。



161:159
04/03/21 19:32
また、SWTサンプル集
URLリンク(amateras.sourceforge.jp)
内のプログラムをコンパイルしてみましたが、
gcj LabelSample1.java --main=LabelSample1 -I. -Iswt.jar swt.o -o LabelSample1
こちらも実行できました。しかし文字化けしてしまいました。

そこで再度スレの内容を確認し、>>67さん、>>97さんの書き込みに気づき、
URLリンク(freett.com) のページを参照し、

i686-pc-mingw32/lib/libgcj.aからInput_SJIS.oとOutput_SJIS.oを取り出し、
javac LabelSample1.java -classpath swt.jar
gcj -Dfile.encoding=SJIS -Iswt.jar -mwindows --main=LabelSample1 -o LabelSam
ple1 LabelSample1.class swt.o Input_SJIS.o Output_SJIS.o

とすることでSWT上で日本語表示ができました。

できればインストール済みのcygwin gcc/gcj3.3.1をそのまま使いたかったのですが、↑のgcc(3.4?)がgcj/swt専用に作られたものみたいなので
そちらを使います。(gcj実行中にいくつかプロンプト画面が立ち上がるのが気になりますが・・)

ありがとうございました。

162:デフォルトの名無しさん
04/03/29 21:36
gnome-gcjってどうやって使うの?
なんかいまいちわからん

163:デフォルトの名無しさん
04/05/13 19:31
gcj でコンパイル時に
-Duser.language=ja -Duser.region=JP
とか指定すると locale を切り変えられるんだけどこれって他の
方法はないのでしょうか??

できたら実行時に実行環境のlocaleを見てほしいんですが…

thisiscool の gcj を使ってます。

164:login:Penguin
04/05/15 00:00
>>163
変だね。
とりあえず、ホームディレクトリの.i18nファイルに
LC_ALL=ja_JP
って書いておけば、次回起動時から反映されるかも

165:デフォルトの名無しさん
04/06/02 01:11
lwjglを試してみたがどうやらgcj側のバグで動かないらしい・・・orz

166:デフォルトの名無しさん
04/06/02 07:53
antでコンパイルした場合とコマンドラインから直接コンパイルした場合で結果が違うのはなんでなの?
antだとエラーで終わって、gcj直だと無事終了する。
antもgcjも "hallo world" ではうまくいったので大きく間違っている部分はないはず。

ant build.xml:
<property name="mainclass" value="nippon.tokyo.dreamtheater.smaf.SMAFMake"/>
<property name="basedir" value="."/>
<property name="srcdir" value="nippon/tokyo/dreamtheater/smaf"/>
<property name="dstfile" value="../bin/execute.exe"/>
<apply executable="gcj" dir="${basedir}">

<arg line="-o ${dstfile}"/>
<arg value="--main=${mainclass}"/>

<fileset dir="${srcdir}" includes="*.java"/>
</apply>

gcj:
gcj -v -o ../bin/execute.exe --main=nippon.tokyo.dreamtheater.smaf.SMAFMake nippon/tokyo/dreamtheater/smaf/*


167:デフォルトの名無しさん
04/06/03 20:11
日本の尖閣諸島付近には、
イラクに匹敵する世界第2位の量の石油が眠っている。
そしてその資産はなんと、640兆円にもなる
 (日本の年間国家予算は約80兆円なので8年分に相当)

        ミ     ∧_∧
        ⊂ヾ(・∀・ )  ヘェーヘェーヘェーヘェーヘェ
        ∩ ゝヽ ⊂_ノヽ 

だが、その資源が日本政府のせいで全て水の泡になりそうだ

えぇ━(゚Д゚;)━━!!!!!

詳しくわ↓
URLリンク(mobius1.nobody.jp)
URLリンク(blog.livedoor.jp)


168:デフォルトの名無しさん
04/06/04 00:01
>>166
エラーで終ったんならエラーメッセージくらい書いてくれないと…
エラーメッセージもなしに誰が答えられるってのよ…?

とりあえず
<apply executable="gcj" dir="${basedir}">

<apply executable="echo" dir="${basedir}">
とかに書き換えて期待した通りの引数が渡っているかどうか
を確認するとかはどうよ?

169:166
04/06/04 07:50
>>168
そういえば、忘れてました。エラーメッセージ。

↓こんなのがソースファイルの数だけでてます。
[apply] /home/user/tmp/ccFGtfvO.o(.text+0x24): In function `main':
[apply] : undefined reference to `nippon::tokyo::dreamtheater::smaf::SMAFMake::class$'
[apply] collect2: ld returned 1 exit status
[apply] Result: 1


170:デフォルトの名無しさん
04/06/04 12:46
>>166
main が参照している
nippon.tokyo.dreamtheater.smaf.SMAFMake
クラスが見つからないってことね…

なんとなく分った…
fileset でファイル全部を指定しているつもりなんだろうけど,その指定
の仕方だと fileset でマッチした各ファイルについて gcj を実行する
ことになるんじゃなかったかな?

だから複数の *.java があるとクラスが見付からなくてエラーになる

171:デフォルトの名無しさん
04/06/04 13:01
>>166
こんな感じでどうでしょう…?
parallel="true" がポイントね。
<apply executable="gcj" dir="${basedir}" parallel="true" >
<arg line="-o ${dstfile}"/>
<arg value="--main=${mainclass}"/>
<srcfile/>
<fileset dir="${srcdir}" includes="**/*.java"/>
</apply>


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4167日前に更新/142 KB
担当:undef