gcjって使ってる人います?at TECH
gcjって使ってる人います? - 暇つぶし2ch1:デフォルトの名無しさん
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>

172:166
04/06/04 23:23
>>170-171
ありがとう。
<apply>にparallel="true"を追加することで
正常にコンパイルできました。

173:162
04/06/15 08:36
コンパイルできません。
こんなんでる。↓
cnisupport.cc:33:21: gcj/cni.h: No such file or directory
cnisupport.cc:34:31: java/lang/Integer.h: No such file or directory
cnisupport.cc:35:30: java/lang/String.h: No such file or directory
cnisupport.cc:36:33: java/util/Hashtable.h: No such file or directory
In file included from cnisupport.cc:37:
cnisupport.h:36:21: gcj/cni.h: No such file or directory
cnisupport.h:37:30: java/lang/String.h: No such file or directory
In file included from cnisupport.cc:37:


174:126
04/06/19 21:37
みんなGCJでGUIは何のツールキット使ってるのよ?

175:デフォルトの名無しさん
04/06/19 22:25
HelloWorldで日本語出なくて諦めますた。へっぽこでごめんね。

176:176
04/06/19 22:47
>>175
本当に出ないのかって今試したら
普通にでたんだけど?

177:デフォルトの名無しさん
04/06/20 00:12
>>174-175

せっかくなんで宣伝しときますw
URLリンク(page.freett.com)

178:デフォルトの名無しさん
04/06/20 00:14
仕切りみたいになってるけど一応
gcjはWindowsのものでもthisiscoolのgcjとmingw公式のgcjとcygwinのgcjがあるんで
どれか明記したほうがいいよ

179:176
04/06/20 00:44
>>178
世の中の10%はWindowsを使っていないってこともあるし、
俺もその10%に入るので、せっかくの情報もあまり関係ないことに。

う~ん。やっぱりSWTで作るべきかなぁ~?
URLリンク(www.google.co.jp)
これだけあるけど、Swingの代わりってどれがいいんだろう?

180:デフォルトの名無しさん
04/06/20 01:04
>>179
LinuxならGNU classpathがあるけどあれってまだAWTだけだったかもしれん・・・

181:デフォルトの名無しさん
04/06/21 00:26
>>179
> 世の中の10%はWindowsを使っていないってこともあるし、
> 俺もその10%に入るので

そうだったらなおさら明記すべきだと思うが・・・

182:デフォルトの名無しさん
04/06/29 22:16
umm-
gui toolkitがどれもこれもうまくインストールできない。

しょうがないので自作しようと思うが、
swingでいうところの、
JWindow,JFrame,JButton,JLabel,JCheckBox,JRadioButton,JTextArea,JTextFieldと
レイアウトマネージャさえあればいいのかしら?

183:デフォルトの名無しさん
04/06/29 22:47
>>182
Tk の項とか。

URLリンク(www.interq.or.jp)

184:デフォルトの名無しさん
04/07/05 06:46
gcjでjavaのメソッドをjni経由で利用できるのかな?

185:デフォルトの名無しさん
04/07/18 14:46
>>184 両方向とも問題なくできるよ。


186:デフォルトの名無しさん
04/07/20 07:10
>>185
そうすると、jni経由でSwingも使えるかな?
やってみるか

187:デフォルトの名無しさん
04/07/20 14:01
出来るけどさほど大した意味はないな

188:デフォルトの名無しさん
04/07/20 14:45
>>186
そもそも gcj でまともに動く Swing があるのか,と…

189:デフォルトの名無しさん
04/07/21 21:37
ほー、c/c++ などのツールキットとして Swing を使うのか。
おもしろいけど、使い物にならないんだろうな。

190:デフォルトの名無しさん
04/08/08 23:58
わからないので聞きます。

Linux上のgcjで、SWTを使おうとしているのだけど
 1
2
3 import org.eclipse.swt.SWT;
4 import org.eclipse.swt.graphics.Image;
5 import org.eclipse.swt.layout.RowLayout;
6 import org.eclipse.swt.widgets.Display;
7 import org.eclipse.swt.widgets.Label;
8 import org.eclipse.swt.widgets.Shell;
9
10 /** Image View sample **/
11 public class sampleswt01
12 {
13
14 /** main method of View Image **/
15 public static void main(String args[])
16 {


191:190
04/08/08 23:59
17 Display display = new Display();
18 Shell shell = new Shell(display);
19 shell.setText("Image View");
20 shell.setLayout(new RowLayout());
21 Image image = new Image(display,"./kago.jpg");
22 Label label = new Label(shell,SWT.NONE);
23 label.setImage(image);
24 shell.pack();
25 shell.open();
26 while(!shell.isDisposed())
27 {
28 display.readAndDispatch();
29 display.sleep();
30 }//while
31 display.dispose();
32 }//main
33
34 /** non exec constractor **/


192:191
04/08/09 00:00
35 public sampleswt01()
36 {
37 }//method sampleswt01
38
39 }//class sampleswt01
という単純なソースを
gcj --main=nippon.tokyo.dreamtheater.test.sampleswt01 -fjni -L/usr/local/lib -lswt-gtk2 -fjni -I/usr/local/lib/libswt-gtk2.jar -o ../bin/sampleswt01 nippon/tokyo/dreamtheater/test/sampleswt01.java
という単純なコンパイルを行って、実行ファイルはできあがったのですが、
Exception in thread "main" java.lang.UnsatisfiedLinkError: memmove
at _Jv_LookupJNIMethod (/usr/lib/libgcj.so.4.0.0)
at org.eclipse.swt.internal.gtk.OS.memmove(org.eclipse.swt.internal.gtk.GtkStyle, int) (/usr/local/lib/libswt-gtk2.so)
at org.eclipse.swt.widgets.Display.initializeSystemResources() (/usr/local/lib/libswt-gtk2.so)
at org.eclipse.swt.widgets.Display.init() (/usr/local/lib/libswt-gtk2.so)
at org.eclipse.swt.graphics.Device.Device(org.eclipse.swt.graphics.DeviceData) (/usr/local/lib/libswt-gtk2.so)
at org.eclipse.swt.widgets.Display.Display(org.eclipse.swt.graphics.DeviceData) (/usr/local/lib/libswt-gtk2.so)
at org.eclipse.swt.widgets.Display.Display() (/usr/local/lib/libswt-gtk2.so)
at nippon.tokyo.dreamtheater.test.sampleswt01.main(java.lang.String[]) (Unknown Source)
というよくわからないエラーが出てとまります。
memmoveが見付からないみたいですが、それがどこにあるのか見当がつきません。


193:デフォルトの名無しさん
04/08/09 02:20
man 3 memmove とか?



194:192
04/08/09 07:38
>>193
見ました.
memmoveのソースはカーネルのあたりにあったのですが、
manによると、引数をとるようですね。
でも、このエラーでは何も出てませんね。
そもそも、memmoveが見付からないという状況がわからないんですが。

195:デフォルトの名無しさん
04/09/04 00:21
>>192
見付からないのは、native memmoveがJNI経由で呼ぶmemmoveってメソッドだから、
man memmoveででてくるやつとは関係ない。
たぶんあんたの環境に、libswt-pi.soってのが足りないんだと思う。

196:195
04/09/04 00:26
> man memmoveででてくるやつとは関係ない。

補足。完全に関係無いって訳ではなく、JNIから呼ばれるmemmove内から、
man memmoveに出てくるやつが呼ばれてるはず。だけど、今回の問題とは
関係ないってこと。

197:デフォルトの名無しさん
04/10/02 16:54:16
URLリンク(page.freett.com)
↑の手順でやってもswt.oが生成されない…

198:デフォルトの名無しさん
04/10/02 17:27:24
>>9

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

大量のオプションがずらずら一行で並んで
5秒たっても見つからなかったので↓こうしました。

$ for s in `gcc -v 2>&1`; do echo $s; done | grep languages

結果、

--enable-languages=c,ada,c++,f77,pascal,java,objc

入ってますたが、もっと分かりやすい見分け方はないんですか?

199:197
04/10/03 00:10:41
すいません。swtのバージョンを2.1.3のやつにしたら普通にできました

200:デフォルトの名無しさん
04/10/03 09:53:24
お!アイコンできた。gccと方法一緒だね

201:デフォルトの名無しさん
04/10/06 17:00:10
ライセンスについて教えて。
gcjで作ったバイナリの配布等、制限ありますか?
英語はどうも苦手で…

202:デフォルトの名無しさん
04/10/06 19:07:24
>>201
基本的には libgcj は GPL なので、スタティックリンクするにしろ
ダイナミックリンクするにしろ、 GPL で配布しなければならない。
ただし、使用している libgcj が LIBGCJ_LICENCE などで例外的に
GPL にとらわれないリンクを認めている場合がある。

要は使ってる libgcj による。

203:デフォルトの名無しさん
04/10/07 08:33:48
>>202
LGPLじゃなかったっけ?
ダイナミックリンクならGPLにしなくても
いいんじゃなかったっけ?

204:デフォルトの名無しさん
04/10/07 14:00:32
>>203
GPLです。

URLリンク(gcc.gnu.org)
> libgcj is distributed under the GPL

205:デフォルトの名無しさん
04/10/07 15:50:55
例外条項の解説お願い。

206:デフォルトの名無しさん
04/10/07 19:40:28
>>202 に書いてある。不足なら自分で原文を読むなり調べるなりしろ。
っつか、その程度も他人に頼らんと出来ないなら gcj を使うのは素直に諦めた方が…

207:デフォルトの名無しさん
04/10/08 00:13:25
はーい。

>>204 のリンク先にlibgcjが理由で
GPLになったりしないって書いてありました。
LIBGCJ_LICENSEのほうは例外として
他の部分でライセンスの不整合がなければ
バイナリを作るためにリンクしても
できたバイナリの複製、配布はじゆうですよ。て意味かなあ。


208:デフォルトの名無しさん
04/10/08 00:15:12
LGPLだって何度も言ってるだろ

209:デフォルトの名無しさん
04/10/08 00:37:05
gcj を使うのは素直に諦めた方が…

210:デフォルトの名無しさん
04/10/08 04:50:06
>>209
そだね。ライセンス読まずに自分勝手な解釈してるし。

211:デフォルトの名無しさん
04/10/08 04:55:14
>>208
っつーか、libgcj が使ってる GNU Classpath も GPL なので。

212:デフォルトの名無しさん
04/10/08 13:45:28
> LIBGCJ_LICENSEのほうは例外として
> 他の部分でライセンスの不整合がなければ
> バイナリを作るためにリンクしても
> できたバイナリの複製、配布はじゆうですよ。て意味かなあ。
て意味ではありません。

っつか、人工無能翻訳でも もうちょっとマトモだと思う……
やっぱり gcj を使うのは素直に諦めた方が……

213:デフォルトの名無しさん
04/11/03 20:20:09
gcjの利点ってなに?

214:デフォルトの名無しさん
04/11/04 01:19:17
>>204
URLリンク(gcc.gnu.org)
1.1 What license is used for libgcj?
libgcj is distributed under the GPL, with the 'libgcc exception'. This means that linking with libgcj does not by itself cause your program to fall under the GPL. See LIBGCJ_LICENSE in the source tree for more details.
釣ってるの?

215:デフォルトの名無しさん
04/11/13 05:50:25
URLリンク(savannah.gnu.org)
例外規定
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version.

216:デフォルトの名無しさん
04/11/13 06:00:27
その訳、

特別の例外として、このライブラリーの著作権保有者は、
独立したモジュールのライセンス条件にかかわらず、
それぞれのリンクされた独立したモジュールに対し
そのモジュールのライセンス条件が適合すれば、
あなたの選んだ条件の下に、実行ファイルを作成するため、
作成された実行ファイルを複製し配布するためにこのライブラリーを
独立したモジュールとリンクする許可をあなたに与えます。
独立したモジュールとはこのライブラリーに由来しないか、
基づかないモジュールです。
このライブラリーを修正した場合は、あなたのバージョンのライブラリーに
この例外を拡張してもよいですが、しかし、そのようにする義務はありません。
あなたがそのようにしたくない場合は、あなたのバージョンからこの例外を
削除してください。

217:デフォルトの名無しさん
04/11/13 16:09:19
っつか、例外付きGPLとLGPLの区別が付いてない奴がいるのかよorz

218:デフォルトの名無しさん
04/11/22 16:06:21


219:デフォルトの名無しさん
04/11/25 06:02:54
もう一つ、gcc.gnu.orgのjava project mailing listより
URLリンク(gcc.gnu.org)
On Tue, 2003-11-25 at 23:56, Steve D. Perkins wrote:
> I found information on the licensing for GNU Classpath, but that
> left me even more confused. For one thing, it's the GPL with a "special
> exception" that seems to essentially make it LGPL'ed (why do certain
> people hate the LGPL so much? do you really think calling it by another
> name makes it different?).

It is definitely different. The GPL+exception license we use does not
have the relinking requirement present in the LGPL. This makes it much
more friendly to embedded developers generating static executables (for
instance). The license is similar in spirit to the libgcc and libstdc++
licenses.


220:デフォルトの名無しさん
04/12/16 00:15:53
>>200

よろしければ、方法詳細ご教授願いたく。


221:デフォルトの名無しさん
04/12/16 00:21:17
URLリンク(planet.classpath.org)

222:デフォルトの名無しさん
04/12/24 13:40:44
最近どうよ?

URLリンク(sourceforge.net)
URLリンク(sourceforge.net)
URLリンク(sourceforge.net)
URLリンク(sources.redhat.com)
URLリンク(sourceforge.jp)

223:デフォルトの名無しさん
05/01/15 04:14:52
SwingWT使ってみた人いる?
感想希望

224:デフォルトの名無しさん
05/01/19 16:52:27
age

225:デフォルトの名無しさん
05/02/03 00:09:59
>>223
SWTが必要なあたりがアレだよね

RHUGっていまいちわからんのだがなんなの?

226:デフォルトの名無しさん
05/02/03 00:17:42
rhugをgoogleの日本語サイトから検索すると、このスレが真っ先に目にとまる。

227:デフォルトの名無しさん
05/02/03 04:01:14
>>225 そんなアレかなあ。SWTって薄いからマルチプラットフォーム
を念頭において実装するときに最下層に持ってきて地ならしするにはいいと
おもうんだけど。
IBMも自社製品でmotif/gtk/qt/win32の上にAWTを実装するのにSWTを
下に敷いてる。

228:デフォルトの名無しさん
05/02/03 21:00:02
>>223
SwingWT単体で使ったのでちとスレ違いだが、ちょっとだけさわったことがある。
Eclipse VE が吐いたコードを、import宣言だけ変えてコンパイルしてみたが上手くいかなかった。
BoxLayoutが無い、JFrame#setDefaultCloseOperation(int)がない、
など、普段よく使うクラスやメソッドがサポートされて無くてげんなりした覚えがある。
0.84の頃だったかな。

229:デフォルトの名無しさん
05/02/03 21:12:33
Windows版GCJ

230:デフォルトの名無しさん
05/02/03 21:19:37
gcjでコンパイルするとランタイム入りでデカくなるというお話ですが
共有ライブラリ化しておけば実行ファイルは小さくなる?

231:デフォルトの名無しさん
05/02/03 22:05:04
>>225
rhug は Java で書かれたクラスライブラリをGCJでコンパイルできる
ようにしたものの集合…かなぁ?

扱っているライブラリの一覧は
URLリンク(sources.redhat.com)
で見れるはず…
Xerces + Xalan や Log4j,JUnitなんかも入っているんだけど
どの程度ちゃんつ動くかは知らん…
Xerces と Xalan だけはちょっとだけ試して一応動くことは確認したけど…

232:デフォルトの名無しさん
05/02/04 22:24:35
>>223
SwingWT で swing のAPIを使うくらいならそのままSWTを使うかな…
>>228 も書いてるけど足りないメソッド,動作しないメソッドがあって
既存のswingアプリを動かすにはかなり手間かな…

233:デフォルトの名無しさん
05/02/07 17:08:42
>>230
小さくなるがそのランタイムは7Mくらいあるぞ
まぁJREよりはマシだけど本末転倒だよな

234:デフォルトの名無しさん
05/02/07 17:44:48
Some benchmark results
URLリンク(gcc.gnu.org)

235:デフォルトの名無しさん
05/02/07 19:57:07
gcjでランタイムをスタティックリンクすると、GPLに感染する?

236:デフォルトの名無しさん
05/02/07 21:04:04
debianに入ってるjavaのパフォーマンスの良さに驚いた。
実装の名前は忘れたけど。
Cで実装したjarも速くてイカす。


237:デフォルトの名無しさん
05/02/07 22:13:18
>>236
それが何か
教えて欲しいから☹age

238:デフォルトの名無しさん
05/02/08 00:35:24
nonfreeじゃなかったからkaffeかgcjくらいしか思いつかないが・・・?

239:デフォルトの名無しさん
05/02/08 03:35:20
>>235
例外規定なしのバイナリとであれば静的/動的に関わらずリンクしたらGPLに感染する。
例外規定がある場合は例外規定の内容による。

240:デフォルトの名無しさん
05/02/08 03:53:37
The rhug project is no longer necessary thanks to the great gcj and GNU Classpath hackers.

rhugはobsoletedになったようです。

241:デフォルトの名無しさん
05/02/08 04:06:04
ばれなきゃなんでもOK

242:デフォルトの名無しさん
05/02/08 04:11:40
ばれなきゃいいっていう精神的乞食にだけはなりたくないね。

243:デフォルトの名無しさん
05/02/08 04:13:43
上の方を見ると例外規定があるおかげで動的静的リンクで感染しないように思うのだが、、

244:デフォルトの名無しさん
05/02/08 14:50:08
>>243
常に例外規定があるわけではない。
作者はいつ例外規定を書き換えたり無くしたりしても構わないし、
例外規定には「ライブラリを改変した者は改変バージョンの配布時に
例外規定を削っても良い」と明記してある。

245:デフォルトの名無しさん
05/02/08 14:53:33
「ライブラリを改変~」ってのは以下の部分。

> If you modify this library, you may extend this exception
> to your version of the library, but you are not obligated to do so.
> If you do not wish to do so, delete this exception statement
> from your version.

246:デフォルトの名無しさん
05/02/08 15:29:32
なんでGPLの話になると必死なのが沸いてくるんだ?

247:デフォルトの名無しさん
05/02/08 16:13:49
そりゃ使おうと思ってるからさ

248:デフォルトの名無しさん
05/02/10 00:33:40
>>237
今手元にマシンないけどたぶんgcjだった気がする。
パフォーマンスっていうか、立ち上がりがよくて軽快。
ロードしてからだったら計測したらsunの方が上なんだろうけど
オレは起動が速いほうがいい。

249:デフォルトの名無しさん
05/03/02 03:13:19
fastjar

250:デフォルトの名無しさん
05/03/06 00:54:04
このスレが立てられて2年と3日、やっと1/4使いきりました。

251:デフォルトの名無しさん
05/03/06 03:52:00
それでもgcj自体よりは使われてるよう棚

252:デフォルトの名無しさん
05/03/13 23:18:57
knopix て gcj なのね

253:デフォルトの名無しさん
05/03/31 19:48:45
>>252 何が?

254:デフォルトの名無しさん
皇紀2665/04/01(金) 02:12:49
URLリンク(slashdot.jp)
URLリンク(slashdot.jp)
↑ここいら辺の記事読むと、gcjでeclipseをnative compileとか
書いてあるけど、ちょっと、そそられない?

#eclipse、まったく使えて無いのだけど、、。

255:デフォルトの名無しさん
05/04/10 12:21:22
なんでIDEが必要なのかがわからん。
便利さがあると思うけど、その分重くなっているのなら意味がないと思うんだよね、僕は。

256:デフォルトの名無しさん
05/04/11 19:31:33
キリ番なのでAGEます。

257:デフォルトの名無しさん
05/04/11 21:11:15
キリ番なのでAGEます。
















257進数で。

258:デフォルトの名無しさん
05/04/11 21:45:21
Javaの文法は好きなんだがVMはちょっとなぁ
というオレに最適な

259:デフォルトの名無しさん
05/04/11 22:55:35
>>258
gcj使って単独で動く実行ファイル作ってもVM内臓か外付けか、
の違いしかないと思うが。もしくはGPLマンセーか、Sunが嫌いか、
みたいな政治的(?)な動機とか。

260:デフォルトの名無しさん
05/04/11 23:00:55
>>259
jreのインストロールさせるのマンドイ
というのも理由のひとつにしようと思っていた。
だが

261:デフォルトの名無しさん
05/04/13 00:36:12
>>254
See "Native Eclipse - The Fast and the Furious IDE" section in
URLリンク(developer.classpath.org)


262:デフォルトの名無しさん
05/05/02 22:40:34
age

263:デフォルトの名無しさん
05/05/05 21:34:15
jikesもエエヨー

264:デフォルトの名無しさん
05/05/07 21:26:06
ん?どういうことぉ?

265:デフォルトの名無しさん
05/05/07 21:26:51
 

266:デフォルトの名無しさん
05/05/07 21:35:24
jikes自体はネイティブアプリケーションだけど、gcjみたいにネイティブ
コードを吐けるわけじゃないのにな。

267:デフォルトの名無しさん
05/05/10 03:54:04
>>266
まぁそうだけど…
gcj自体はクラスファイルを生成できるネイティブアプリケーション
でもあるので jikes と競合しているといえなくもない…

# あれ? じゃあ gcj だけでいいじゃんってことにな(ry

268:デフォルトの名無しさん
05/05/10 22:55:18
アパッチのメンバーら、「Project Harmony」でオープンソース版J2SE開発へ
URLリンク(japan.cnet.com)

だって。

269:デフォルトの名無しさん
05/05/11 06:38:37
>>268
そのニュースソース自体はここ関係ないよ

それを使ってGCJに寄与できるかっていうと、そうは思えないし。

早くSWINGの実装してほしいな。僕には無理だから。

270:デフォルトの名無しさん
05/05/11 09:53:13
> ニュース-ソース [news source]<
>
> 情報源。

情報源っつー事は…… Apache Foundation?
それとも Harmony の提案があったメーリングリスト?

271:デフォルトの名無しさん
05/05/11 12:08:38
>>269
そんな貴方にclasspath

272:デフォルトの名無しさん
05/05/11 12:55:37
>>269
本当にやるんなら gcj とか classpath とは競合するだろうから、
少なくともやる気とか競争心の部分で寄与してくれると思うよ。

それに Apache License v2 は GPL より緩いライセンスだから、
gcj とか classpath から見たら、Project Harmony の成果物をパクり放題。
実際にパクるかは別だし、まだ何も無いけど。

273:デフォルトの名無しさん
05/05/11 15:13:05
URLリンク(www.kaffe.org)
をみると Swing も 半分以上は出来てるのか。
ダメっぽいのは metal LAF とか、text関係(HTMLも)とかぐらい?

>>271
gcj が使ってるのは基本的に classpath だろ。
gcj の方で若干手を入れてるかもしれんが。

274:269
05/05/11 22:58:57
>>271-273
よくわかってないんだけど、classpathはGCJに含まれているみたいなことをどっかで呼んだんだけど、gcj?(GCC?,GPL?,FSS?)バージョンのclasspathが入ってるってことなの?
別途、classpathをインストロールすればswingとかでアプリ組めるってこと?

275:デフォルトの名無しさん
05/05/11 23:32:27
>>274
classpathのAWTって確かGTK+ベースのやつしかないんじゃなかったっけ?

276:274
05/05/11 23:52:33
thx
今、Gnome使ってるからちょうどいいな。
調べてみます。

277:デフォルトの名無しさん
05/05/12 00:32:01
URLリンク(www.kaffe.org)
って、100%完成ってでててもコンパイルが通るだけで実行ができないものも含まれてるよね?

278:デフォルトの名無しさん
05/05/12 21:27:15
>>268
URLリンク(gcc.gnu.org)
> We're trying to come up with some licence that allows the Apache
> people to work with us and share resources. We're fairly confident
> that it can be done.

だそうで。GNU のプロジェクトなのに GPL 止めるのかな?

279:デフォルトの名無しさん
05/05/12 22:58:12
>>278
例えば(広告条項のない)Apache License 2 ならば、その成果をGPLなソフトに取り込む
のは問題ないよね。そういう意味で互換性のあるライセンスでやる(やってほしい)ってこと
じゃない?

280:デフォルトの名無しさん
05/05/13 00:33:15
>>279
それだと完全な一方通行になるから share resources とは言わんのでは?

281:デフォルトの名無しさん
05/05/13 01:24:17
例外条項で調整するのかな。
URLリンク(www.gnu.org)

282:デフォルトの名無しさん
05/05/13 01:26:09
そうだとすると、例外条項って何でもアリになってくるな。
すでに何でもアリになってるけど。

283:デフォルトの名無しさん
05/05/15 15:24:18
fedora developmentに libswt3-gtk2 というRPMが入っていたので、入れてみたら、

/usr/lib/eclipse/plugins/org.eclipse.swt.gtk_3.1.0.jar.so
というのがインストールされていました。どうもswt.jar のgcjによるsoっぽいんで、

% gcj --main=WindowSample1 -o WindowSample1 /usr/lib/eclipse/plugins/org.eclipse.swt.gtk_3.1.0.jar.so WindowSample1.java

としてみたら、ちゃんとリンクができ、実行オブジェクトができました。
でも、

% ./WindowSample1

としたら、
Exception in thread "main" java.lang.LinkageError: unexpected exception during linking: org.eclipse.swt.widgets.Display
at java.lang.VMClassLoader.transformException(java.lang.Class, java.lang.Throwable) (/usr/lib/libgcj.so.6.0.0)
at java.lang.VMClassLoader.resolveClass(java.lang.Class) (/usr/lib/libgcj.so.6.0.0)
at java.lang.Class.initializeClass() (/usr/lib/libgcj.so.6.0.0)
at WindowSample1.main(java.lang.String[]) (Unknown Source)
at gnu.java.lang.MainThread.call_main() (/usr/lib/libgcj.so.6.0.0)
at gnu.java.lang.MainThread.run() (/usr/lib/libgcj.so.6.0.0)
Caused by: java.lang.NullPointerException
at java.lang.VMClassLoader.resolveClass(java.lang.Class) (/usr/lib/libgcj.so.6.0.0)

となりました。しくしく。そう楽にはいかないの?



284:デフォルトの名無しさん
05/05/15 15:38:52
-lエクリプス(swt?)が抜けてるのでは?
違ってっても文句は言わずに。

285:デフォルトの名無しさん
05/05/20 23:14:07
>>284
全然関係なかった。隣家に渡すオプションが必要だった。
あと、やっぱりコンパイル時にジャンプ先を確定しないよう
indirect-dispatchを指定するとか、幾つか工夫がいる。

libgcjやswtをLD_LIBRARY_PATHに通しておいたら、
バイナリのサイズは数十キロだけだし、GTK使ってるから日本語も問題ない。
同じソースで、windowとlinuxでnativeなguiを使ったバイナリが生成できるのは
最強だな。

286:デフォルトの名無しさん
05/05/21 00:14:12
ネイティブなのに速度ではHot Spotに遠く及ばないという理不尽さをのぞけば最強だ。w

287:デフォルトの名無しさん
05/05/24 18:37:51
>>286
実行ファイルのイメージがネイティブであるとかないとかってのは速度にあんまし関係ないからねぇ。

288:デフォルトの名無しさん
05/05/24 18:55:33
Windowsなら(サイズでかくなるけど)ランタイムの配布が不要なのは一応メリットになるが
他のOSではどうなんだろう?


289:デフォルトの名無しさん
05/05/24 19:49:53
静的にも動的にも結合できるから問題ない。
動的な場合、libgcjをインストールさせればよい。
UNIX系の場合、

290:デフォルトの名無しさん
05/05/25 13:03:36
ってか Linux や BSD で最近の gcc が入ってれば大抵 libgcj は
入ってるはずだし…

メリットは
* ランタイム配布が不要
* 起動時間がJREよりは速い
くらいか...

swt でクライアントアプリケーションやツール系を作るのに使うってのが
無難な(おそらく唯一の)使い道じゃないかな?

ゲームとかは… やっぱ C++ や D 言語の方が向いてる気がするなぁ…

291:デフォルトの名無しさん
05/05/25 22:27:45
>大抵 libgcj は 入ってるはずだし…

ところがギッチョン入ってなかったりする

292:290
05/05/26 14:03:07
>>291
そんな環境もあるかもなー,という気はしてた…
具体的にどの環境で入ってなかったのか晒してくれるとみんな参考になるかも?


293:291
05/05/26 21:33:46
>>292
ここ数年LinuxのFTP版(無料)のディストロをアップデート期限まで使用しては
乗り換え〃してるからどれがそうだったかははっきり覚えてなけど、
Linuxのディストロによっては元からインスロールイメージに入ってなかったり、
標準ではインストールされないものがあった。
まぁでもソースからインスソールさせればいいのかなぁ。

294:290
05/05/27 14:43:16
そのディストリビューションは最近のgcc(3以降くらいか?)なんだよねぇ?

295:デフォルトの名無しさん
05/05/27 14:46:28
古いlibgcjなんかが入ってると、かえって迷惑ってこともあるわな。
現状ではスタティックリンクがお勧めかな。

296:デフォルトの名無しさん
05/05/27 15:22:35
g++ + boehm GCで書くのとgcjで書くのとでは、パフォーマンス的には同じよーなモノなのでしょーか?
後、バイナリサイズ的にはいかがでしょう。


297:デフォルトの名無しさん
05/05/27 15:49:44
自分で計れよ。バイナリサイズなんて何を使うかで全然違ってくるだろ。
それからg++ + boehmがJavaのように使えると思ったらかなり間違いだ。


298:デフォルトの名無しさん
05/06/02 21:26:08
Linuxで作って、Windows用バイナリーを作る方法教えてください

299:デフォルトの名無しさん
05/06/02 22:40:45
1.Linuxで書いて、Windowsでコンパイル
2.Wineでコンパイル
3.Mingwnでコンパイル
4.ソース眺めながら脳内コンパイル

300:デフォルトの名無しさん
05/06/02 22:54:13
5. バイナリエディタで作る

301:デフォルトの名無しさん
05/06/03 00:37:51
6. Linux側にクロス環境を構築する。

302:デフォルトの名無しさん
05/06/03 01:34:52
5は3、6は4と言ってる事たいして変わらんね

303:デフォルトの名無しさん
05/06/03 01:35:17
逆だった・・・

304:298
05/06/03 06:43:14
>>301の6の方法がいいですが、何を準備すればいいでしょう?
と、いうかWindowsは職場にしかなく、Linuxは自宅にしかなく、
会社の規定でWindows側に開発環境を持ち込めないのですが、
どうしてもちょっとしたソフトが必要になっています。

305:デフォルトの名無しさん
05/06/03 13:13:12
ぐぐってみた。
URLリンク(bitwalk.hp.infoseek.co.jp)
ためしてはいない。

306:デフォルトの名無しさん
05/07/08 21:40:38
gcjでant使えるようにえれーいろいろコンパイルして
動くまでいったらant.exe 32MBでした。以上です

307:デフォルトの名無しさん
05/07/09 02:34:31
ネイティブ言語なら、動的/共有ライブラリにして外出しされる部分だろうな、サイズを増加させてるのは。

308:デフォルトの名無しさん
05/07/09 20:58:33
>>306
Fedora Core 4のant-1.6.2-3jpp_10fcだと
/usr/lib/libant-1.6.2.jar.soが3,221,724バイト、
/usr/lib/libant-launcher-1.6.2.jar.soが25,688バイト。
合わせてだいたい32MBくらい?

309:デフォルトの名無しさん
05/07/09 22:39:29
>306
仰るとおりです。ant, ant-launcherだけだとうまく動きませんで、
足りないのばんばん足してった結果
xerces, bcel, log4j, junit, xalan, ant-nodeps(7割)
まで入れちゃって32MBになります。入れたはいいがjunit, xalanは機能しない

>307
個々のサイズはant (5,441,802), ant-launcher(51,386)になります
そこまで小さいのはできそうにありません

機能しないの取っ払って最適化いじって32MBは9MBまでいきました。
マルチスレッド機能してるしすごいねこれ、9MBあっても普通のより早いと感じる。

gcjいかすね!バグみっけたら俺の園児レベルの英語でばんばんパッチ送っていくぜ

310:1段ずれたのはご愛嬌
05/07/09 23:41:04
ant.exe+jikes.exeちょっぱやっすよちょっぱや

311:デフォルトの名無しさん
05/07/18 07:51:53
>76
の作り方教えて欲しい

312:デフォルトの名無しさん
05/08/03 22:38:53
へいお前さんがた
静的にするには名前集めてもっかいリンクするだけじゃないのかい?

うまく作れないけど、ものっそい名前つく
_ZN99とかだらけだけどよろしいのかな

echo EXPORTS >libgcj.def
nm libgcj.a | grep ' T _' | sed 's/^.* T _//' >>libgcj.def
dlltool --def libgcj.def --dllname libgcj.dll libgcj.a

最後のdlltoolってばgcj -share とかでも同じ?なんか微妙に違うけど
これでdll作ってそっから吐き出すlibgcj.aで置き換えたら完
ってはずだったんだけど参ったぜ、ぶっちゃけるとここでスキル全開なんだ
こんな単純じゃない?どうやってこしらえるん

313:デフォルトの名無しさん
05/08/10 12:23:36
MinGW 環境での gcj用の SWT のビルド手順と
MinGW gcc3.4.4 用のバイナリパッケージ.

URLリンク(hoeppie.gmxhome.de)

314:デフォルトの名無しさん
05/08/28 15:42:18
Cygwinのgcj使ってるんだけど

gcjってSJISのファイル入出力どうやるの?

普通にReader、Writer使って動いてたたclassをEXE化したら
化けて全然使えないんだけど。


315:デフォルトの名無しさん
05/08/28 16:26:25
>>314
new InputStreamReader(inputstream, "SJIS ");
new OutputStreamWriter(outputstream, "SJIS ");

316:314
05/08/28 19:28:38
ぬ、
素人だと思って馬鹿にしてるな
こちとらUNIX系は素人だけど
Javaは1.0のころからやってんだこんちくしょうべらぼうめ。

ていうかおねがいしますよ
助けてくださいよ

普通にjavaコマンドで動かせば問題ないんですよ。

gcj --main=TestMain --classpath=bin -o test.exe bin/TestMain.class

ってexeに変換したら全然だめなんですよ。



317:314 テストソース
05/08/28 19:29:26

import java.io.*;
import java.util.*;

public class TestMain {

  private static final String WIN_SJIS = "Shift_JIS";

  static PrintWriter log;

  public static void main(String[] args) throws IOException {

    String inFile, outFile;
    inFile = args[0];
    outFile = args[1];
    System.out.println("infile:" + inFile);
    System.out.println("outfile:" + outFile);

    OutputStream os = new FileOutputStream("debug.log");
    log = new PrintWriter(new OutputStreamWriter(os, WIN_SJIS));

    List list = readLines(inFile);
    writeLines(outFile, list);
  }



318:314 テストソースつづき
05/08/28 19:30:37
  private static void writeLines(String outFile, List list)
    throws IOException {
    OutputStream os = new FileOutputStream(outFile);
    BufferedWriter w =
      new BufferedWriter(new OutputStreamWriter(os, WIN_SJIS));
    Iterator i = list.iterator();
    int line = 0;
    while (i.hasNext()) {
      String out = (String)i.next();
      w.write(out);
      w.write("\r\n");
      w.flush();
      line++;
      if (line % 50 == 0)
        System.out.println("out:" + line + ":" + out);
    }
    w.close();
  }


319:314 テストソースつづき2
05/08/28 19:31:14
  private static List readLines(String inFile) throws IOException {
    InputStream is = new FileInputStream(inFile);
    BufferedReader r =
      new BufferedReader(new InputStreamReader(is, WIN_SJIS));
    List list = new LinkedList();
    long line = 0;
    String in;
    while ((in = r.readLine()) != null) {
      list.add(in);
      line++;
      if (line % 50 == 0)
        System.out.println("in:" + line);
    }
    r.close();
    return list;
  }
}


320:デフォルトの名無しさん
05/08/28 19:39:15
>ってexeに変換したら全然だめなんですよ。
当たり前じゃん
そこまでネイティブに無料で変換できるのであればJETなど買う奴いない
gcjのサポートしているAPIを読め

321:314
05/08/28 19:48:43
>>320
>当たり前じゃん
>そこまでネイティブに無料で変換できるのであればJETなど買う奴いない

ガーン。
GUIがアレなのは予想できたけど
テキスト処理ONLYのコンソールアプリもダメとは!

>gcjのサポートしているAPIを読め

すんませんリンク教えてください。



322:デフォルトの名無しさん
05/08/28 20:03:13
ant.exe作ってからこつこつ知識をつけてきた俺がお答え、
できませんスキルの関係でもうしばらくお待ちください。
自分はウィンだと痒いところに手が、いや痒いところに対して全然手が足りない状態だったので
kernel2.6と駆け落ちしています。

コツはね、jarをいっきにいかずばらして全部コンパイルして
そんで一回まとめて ar cur libtest.a *.o
gcj --classpath=.:test.jar --main=Main Main.o -ltest
ってのが俺はすんなりいった

323:デフォルトの名無しさん
05/08/28 20:04:33
>libgcjは、 JDK 1.2ライブラリとおおむね互換性があります。
>しかし、 libgcjには欠けているパッケージも数多くあります。
>これは、 java.awtにおいて特に顕著です。個々のクラスやメソッドで欠けているものもあります。
>現在のところ、 libgcjとJava 2プラットフォームの相違点を一覧にしたものはありません。

ちょっと待ってくれよ、そこまでコンパイルオプション知っていて尚且つJava暦長いのなら
GCJのDoc当然読んでいると思ったよ


324:デフォルトの名無しさん
05/08/28 20:05:33
>現在のところ、 libgcjとJava 2プラットフォームの相違点を一覧にしたものはありません。
↑これが重要で しかも[悪]

325:デフォルトの名無しさん
05/08/28 20:18:21
libgcj.aからSJIS周りの.oファイルを取り出して直接リンク。

ところでそれ、テストソースになってない。どこでなにがどう
化けているか確認できないだろ。

326:314
05/08/28 20:28:28
>>323

いや、俺もそこは読んだけど
AWTは互換性あんまないけど他はけっこういけるんじゃないかと思ったのさ
(甘かったけど)

>相違点を一覧にしたものはありません。

うーん。

>どこでなにがどう化けているか確認できないだろ。

ファイル出力もだめだしSystem.outでコンソールに出しても化け化けでどうにも、、
unicodeをダンプするべきだったすね。

327:デフォルトの名無しさん
05/08/28 20:51:10
(new InputStreamReader(is, WIN_SJIS));
がダメなら
バイトで読み込んでそのままバイトで出すとどうなる?
そうすれば、少なくともWin環境ではコンソールで化けないとおもう


328:デフォルトの名無しさん
05/08/28 20:52:21
皆使ってんのか!??俺だけじゃねーのか?とか思ってたぞ

これ作ってみバイナリサイズも実行速度も文句ないと思うよ
依存もないし

unzip javacc-3.2.jar
for cls in `find|grep *.class`; do
gcj -g -O2 --classpath=. -c -o ${cls%class}o $cls
done
gcj -g -O2 --classpath=. --main=javacc -o javacc javacc.o org/javacc/parser/*.o

他ねーの??





329:デフォルトの名無しさん
05/08/28 20:54:35
>>326
最低限
String s1 = "\u3042";
System.out.println(s1);
System.out.write(s1.getBytes("Shift_JIS"));
System.out.println();
System.out.println(System.getProperty("user.language"));
System.out.println(System.getProperty("file.encoding"));
これくらいの情報はないとね。

330:デフォルトの名無しさん
05/08/28 20:55:13
それ動くか試してないから手直必須
あと org/javacc/parser/Version.oも入れる

331:デフォルトの名無しさん
05/08/28 21:13:36
329にちょっと追加してみた。
String s1 = "\u3042";
System.out.println(s1);
System.out.write(s1.getBytes("Shift_JIS"));
System.out.println();
System.out.println(System.getProperty("user.language"));
System.out.println(System.getProperty("file.encoding"));
OutputStreamWriter ow = new OutputStreamWriter(System.out, "Shift_JIS");
ow.write(s1 + "\r\n");
ow.close();

$ gcj --main=Test Test.java

$ ./a.exe
?

en
8859_1


$ gcj --version
gcj (GCC) 3.4.4 (cygming special) (gdc 0.12, using dmd 0.125)

一行目が文字化けするのはfile.encodingが違うからだけど、
5行目からちゃんと明示的に指定すれば文字化けしないことがわかる。
入力系は見てないけど同じような感じで確認してみたら?

332:デフォルトの名無しさん
05/08/28 21:21:44
URLリンク(page.freett.com)
この方法は使えないの?

333:デフォルトの名無しさん
05/08/28 21:51:38
# gcj -g -O2 --main=Test --classpath=. Test.java Input_SJIS.o Input_EUCJIS.o Input_UTF8.o Input_iconv.o Output_SJIS.o Output_EUCJIS.o Output_UTF8.o Output_iconv.o
# ./a
?

en
8859_1


eucにしたらなったぜ!

334:デフォルトの名無しさん
05/08/28 22:26:04
>>323
>現在のところ、 libgcjとJava 2プラットフォームの相違点を一覧にしたものはありません。

詳細な比較じゃないけど、パッケージごとのだいたいの比較がここにある:
URLリンク(www.kaffe.org)
でも、メソッドが用意されていて中身がない場合もあるから、あんまり役には立たないかも。

335:314
05/08/28 23:04:58
おかげさまで>>332
の方法で上手くいったっす。

皆さんありがとうごさいます。

#ていうかリンカオプションとかその辺の問題?

336:314
05/08/28 23:15:48
#サポートしてるエンコード全部リンクするのをよしとしない気持ちもわかるけど
#リンクオプションみたいなので指定させてくれてもいいかなと思った。


337:デフォルトの名無しさん
05/08/29 19:57:31
いろいろ試した限り cygwin の gcj より MinGW 4.1 の gcj の方がずっといい感じ…
libiconvを追加でインストールする必要があるのが面倒だけど,
ソースコードのエンコーディングを gcj --encoding=utf-8 とかで指定できるし
Reader,Writerのエンコーディングも上みたいに面倒なことしなくても使えるっぽいよ?

338:デフォルトの名無しさん
05/09/17 13:28:39
>>335
Linuxのgcjですが、
gcc バージョン 4.0.2 20050913 (prerelease) (Debian 4.0.1-7)

$ cat Test.java# これはdefault encodingのEUC-JPで書かれている。
public class Test{
public static void main(String args[]){
System.out.println("日本語表示のテスト");
}
}
$ gcj --main=Test Test.java
$ ./a.out
日本語表示のテスト# EUC-JPで出力されている
$ ./a.out | hexdump -C# 確認
00000000 c6 fc cb dc b8 ec c9 bd bc a8 a4 ce a5 c6 a5 b9 |................|
00000010 a5 c8 0a |...|
$ gcj -Dfile.encoding=SJIS --main=Test Test.java
$ ./a.out | hexdump -C
00000000 93 fa 96 7b 8c ea 95 5c 8e a6 82 cc 83 65 83 58 |...{...\.....e.X|
00000010 83 67 0a |.g.|

で何の問題もなし。出力はちゃんとSJISになっている。

339:デフォルトの名無しさん
05/09/17 13:30:24
それから>>332のページ、
> 日本語をそのままJavaの内部コードのUTF-8で出力したからです
って書いているけれど、内部はUCS-2だから、
default I/O encodingの間違いだね。

340:デフォルトの名無しさん
05/09/17 20:53:52
>>338
ちなみにプロパティはコンパイル時に指定する以外に
環境変数GCJ_PROPERTIESで設定することもできる.
$ env GCJ_PROPERTIES="file.encoding=SJIS" ./a.out
みたいに走らすと出力がShift_JISになるはず(gcj3.3.2 on linux にて確認)

341:デフォルトの名無しさん
05/09/17 21:26:30
これだね。
URLリンク(gcc.gnu.org)

設定できるプロバティ
13 System properties
URLリンク(gcc.gnu.org)

342:デフォルトの名無しさん
05/09/30 11:55:21
gcj便利なのですがコンパイルする度にすごい時間がかかりますよね。
そこでjavacのようにclassファイルをハードディスクに保存させ、
次回のコンパイル時にはそれを再利用して速度を上げるようなことはできますか?
javacだと変更箇所だけをコンパイルし直すので時間の節約になります。

343:デフォルトの名無しさん
05/09/30 12:35:06
すみません、説明不足でした。
質問したかったことは .class ファイルから生成した .o ファイルなどのようなバイナリを
ハードディスクに保存させる方法です。

344:デフォルトの名無しさん
05/09/30 12:40:25
-c

345:デフォルトの名無しさん
05/09/30 13:05:01
>>344
どうもありがとうございます。うまくいきました!

もう一つ質問させて下さい。
jniのdllファイルをリンクしてコンパイルするには以下のような構文でOKでしょうか。
gcj -o Hoge.exe --main=com.hoge.Main Hoge.java Hoge.dll

Hoge.java のソースでは System.loadLibrary をコメントアウトして
private static final native long getHoge();
という宣言が書いてあります。

346:デフォルトの名無しさん
05/10/01 00:18:14
minGWでcj使おうと思ったら
gcj: installation problem, cannot exec `cc1': No such file or directory
なんて表示された。解決策分かる人いませんか

347:デフォルトの名無しさん
05/10/01 00:33:22
>>346
インストールされてないだけだべ。

348:デフォルトの名無しさん
05/10/01 01:38:25
>>347
ありがと~gcc-coreのインストしわすれでした。変なところでつまずいてしもた。

349:デフォルトの名無しさん
05/10/03 19:03:28
Java 1.3.1 で問題なく動いているソースを gcj 3.4.4 でコンパイルしました。
いざ実行すると次の例外をはいて終了してしまいます。

java.lang.NullPointerException
<<No stacktrace available>>
java.lang.ExceptionInInitializerError
<<No stacktrace available>>
Caused by: java.lang.RuntimeException
<<No stacktrace available>>

エラーの発生箇所がつかめないので、スタックトレースを表示させたいのですが可能でしょうか?
それ以外に原因となっている箇所を特定する方法はあるのでしょうか?


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