gcjって使ってる人います?

このエントリーをはてなブックマークに追加
1なのにsageちゃうあたりがgcj


本家
http://gcc.gnu.org/java/


関連:
「GCCについて part2」
http://pc2.2ch.net/test/read.cgi/tech/1046179115/
>>1
sageてても一番上に出てますた

   C#厨が3getです。

    ┏━━┓
    ┃C# ┃
  ⊂(`・ω・´⊂⌒`つ≡≡≡(´⌒;
4デフォルトの名無しさん:03/03/03 03:03

      、ヾ''""ツノ, <ほっしゅ入りまーす
     ミ ・д・ 彡
     "ミ,, , ; ;;::ヾ
       "'''''""
5デフォルトの名無しさん:03/03/03 03:04
ネイティブコードにコンパイルする意味ってあるのかね。
最近のVMなら十分な速度出てると思うが。

かといって、IOとかGUI系はまだ実装不完全だろ?これ
RMSの自己満(略
7デフォルトの名無しさん:03/03/03 03:06
>>5
GPLなことに意味があります。
Blackdownの借りをかえさなくてはいけません。
8デフォルトの名無しさん:03/03/03 03:18
結構サポートされてる・かな?
http://gcc.gnu.org/java/status.html
windows 環境での gcj 事始

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

1. まず cygwin をインストールしましょう。
Base と Devel カテゴリーをごりっと全部インストールしてください。
cygwin の質問は以下のサイトやスレで。
http://www.mars.dti.ne.jp/~sohda/cygwin/
Cygwin使っている人いますか? part7
http://pc.2ch.net/test/read.cgi/unix/1039449446/
Cygwin使っている人いますか?
http://pc2.2ch.net/test/read.cgi/win/1023470780/

2. インストールしたら cygwin のシェルで
$gcc -v
と打ってみましょう。
バージョンが 3.x、--enable-languages に java が入っていることを確認してください。
3バッカ
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
バイナリ生成はどうするの?
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
/usr/lib/gcc-lib/i686-pc-cygwin/3.2/../../../../i686-pc-cygwin/bin/ld: cannot find -liconv
こんなんでちゃうな。。。ldはあるんだけど。
http://www.cygwin.com/ml/cygwin-apps/2002-10/msg00011.html
ここに書いてあった。失礼
コンパイルとリンクを分ける場合
$gcj -c -o Hello Hello.java
$gcj --main=Hello -o Hello Hello.o
日本語のリテラルをソース中に記述したい場合
→UTF-8 で保存する
GCJ と SWT で Linux ネイティブアプリを作るお話

Create native, cross-platform GUI applications
--How GCJ, Linux, and the SWT come together to solve the Java UI conundrum
http://www-106.ibm.com/developerworks/linux/library/j-nativegui/index.html?dwzone=linux

cygwin でもできそうな気はするが。
Java using SWT and GCJ 3.2 for Win32
http://gcc.gnu.org/ml/java/2002-12/msg00105.html

cygwin じゃなくて mingw で gcj したい人向け
How to build GCJ for Windows
http://ranjitmathew.tripod.com/phartz/gcj/bldgcj.html

この辺は試してない。
>>14の件はlibiconvをインストールしたら上手くいきました。
それにしてもバイナリでっかいねえ。まだまだ最適化に
関してはやることが沢山あるのかな。
少し古いけど首藤さんとこでとったベンチ
http://www.shudo.net/jit/perf/index.html
>>19 補足
http://sourceforge.net/projects/mingw/
http://sourceforge.net/project/shownotes.php?release_id=127221

>>21
JRE を内蔵していると考えればこんなもんかと。
strip して upx かければ多少縮まる。
>>23
これさ、オブジェクトファイルは5kなのにバイナリ作ると
一気に2MB,stripかけても1.3MBにもなるのね。
そのくっつく部分をライブラリとしてそとに出せないもんなのかな?
せめてAWTに対応してたらなぁ・・・
>>25
AWT フルサポートしたら Swing も殆ど全部動くでしょ。
>>21
ちゃうちゃう、Javaの標準ライブラリを全部抱えてるから
>>24
できるよ。つか*nix系だとデフォでそーなってる(ハズ)。
win系(cygwin/mingw)で.aから.dllを作る方法はそっち方面探せ。
28デフォルトの名無しさん:03/03/03 18:40
保守上げ
>>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)
cygwin 版は -shared を無視されるっぽい。
mingw 版は動的リンクできるのかな。
cygwin 上で gcc をビルドしようと試みたが、
case-insensitive bug なる問題で gcj がビルドできなかった。
どうやら case-sensitive なファイルシステム上でクロスコンパイルしてやらないとダメらしい。
どうでもいいが、gcjよりgjcのほうが名称として適当な気がする、、、
Gnu Compiler for Java
>>29>>30
libgcjを共有ライブラリにした場合
HelloWorld(strip)
mingw : 12800
cygwin: 11776
Helloswt/mingw
static: 3453952
gcjのみdll: 1565696
gcj/swtをdll: 12824
>>34
情報さんくす
>>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)
3734:03/03/10 06:57
>>30,>>36
34はコンパイラ自体はcygwin,mingw標準のものです。

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

この辺参照。
http://gcc.gnu.org/ml/java/2002-12/msg00287.html
なおcygwinではpseudo-reloc.cは不要。

とここまでふっといてgcjを常用してるかっつーとためしにやってみたダケなんだが。
38デフォルトの名無しさん:03/03/15 02:46
zip -d *AWT* swt.jar
でAWT関係のクラスを削除したswt.jarをmingwのGCJでコンパイルすると
unreachable bytecode from...っていう警告がたくさん出てくるのですが、オブジェクトファイルはできてるんです
これで大丈夫なんでしょうか?
>>38
たぶん大丈夫でしょ。到達不能な部分があるってだけの話だから。
その警告は特定バージョンのための条件分岐とかあると絶対出てくるので。
4038:03/03/15 03:27
>>39
ありがとうございます、とりあえずこのまま使ってみます
4138:03/03/15 09:58
メモがてらちょこっとインストール解説ページを作ってみたけど
あらためて自分の文才のなさが浮き彫りに(鬱

http://page.freett.com/gikob/gcjswt.html
>>41
さんの解説通り
インストールできました

わかりやすかったです

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

いい方法ないでしょうか?
4342:03/03/15 22:08
すいません
>>42の後半はスレ違いでした
44デフォルトの名無しさん:03/03/17 04:18
保守
45デフォルトの名無しさん:03/03/17 14:16
cygwin/mingwでライブラリをdllにするのはどーやるの?
dllwrapとかいうコマンドがあります
gcc に -shared オプションをつける
48デフォルトの名無しさん:03/03/21 23:18
定期保守
49tantei:03/03/21 23:19
★あなたのお悩み解決致します!!
●浮気素行調査
彼氏、彼女、妻、夫の浮気を調査致します!!
●盗聴器盗撮機発見
あなたの部屋に誰かが仕掛けているかも!!
●行方調査
行方不明になっている家族の消息を調査致します!!
●電話番号から住所割り出し
一般電話、携帯から住所を割り出し致します!!
●ストーカー対策
社会問題ともなっているストーカーを撃退致します!!
その他人生相談からどんなお悩みでも解決いたします!!
 直通  090−8505−3086
URL  http://www.h5.dion.ne.jp/~grobal/
メール  [email protected]
   グローバル探偵事務局 

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

http://gcc.gnu.org/ml/java/2002-12/msg00105.html
を参考にして、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

$ ./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.
 
Cygwin版もMingw版も出力をShift-JISにしないと日本語がまともに表示できない・・・
>>53
そりはコンソールの表示文字コードの問題かと・・・
55デフォルトの名無しさん:03/04/05 23:16
>>50-51
だ、誰かつД`) タスケレ !!
>>53
mltermかrxvt-ml使えば? euc-jpもutf-8も可。
どっちもcygwinに入っていると思た
http://mlterm.sourceforge.net/
http://www.geocities.co.jp/SiliconValley-Oakland/6833/rxvt/

>>53
console表示はgcjの担当じゃないもんね(w
出力は担当だけども。
5753:03/04/09 18:26
環境にあわせてエンコードしてくれるものだと思っていた漏れがバカでした・・・鬱
58山崎渉:03/04/17 15:40
(^^)
保守sage
60山崎渉:03/05/28 13:25
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
61デフォルトの名無しさん:03/06/08 04:12
libgcj.dll と libswt.dll の作り方が分かりません。。
dlltool や dllwrap を使ってあれこれやってみたのですが…。

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

http://members.tripod.co.jp/usr_vogel/Compiler/Mingw32/DLLMake.html
http://webclub.kcom.ne.jp/ma/colinp/impdef.tar.gz

どなたか、libgcj.a と libswt.a を共有ライブラリにする方法を
教えてください。
3舗?U
MinGW GCJ 3.3 で コンソールへの日本語出力 と
MS SQL Server JDBC ドライバのコンパイルはできました。

SWT, JDBC, 日本語 がこなせるので GCJ でも
それなりのアプリケーションを構築できるようになりましたね。
64デフォルトの名無しさん:03/07/03 19:38
Pure Java なデータベース HSQL をネイティブコードにコンパイルできたよ。
ちゃんと動いているし。
>>63
GCJ3.3って公式ダウンロードサイトにはなかったので
検索したら↓がひっかかったんだけどこれのこと?
http://www.thisiscool.com/gcc33_mingw.htm
6665:03/07/03 21:31
GCJ 3.4もあるみたいなんで早速GCJ 3.4を試してみます
実行時に必要になるオブジェクトやリソースがリンクされないんだけど…。

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 などの
文字コードコンバート系 オブジェクトもリンクされないので、
http://www.thisiscool.com/gcc33_mingw.htm にある
バイナリでは、デフォルトでコンソールに日本語を表示することができない。

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

そのうち、構成しなおした libgcj.a でもアップするか…。
>>67
+1 参考になる
6967:03/07/13 10:33
ttp://webclub.kcom.ne.jp/vc/ryo/libgcj.zip

日本語が通るようにした libgcj.a です。
http://www.thisiscool.com/gcc33_mingw.htm にある
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⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
>>797=798
これ分かります?書いたの自分なんですけど。

gcjって使ってる人います?
http://pc2.2ch.net/test/read.cgi/tech/1046627795/50-
>>74はゴバーク
76デフォルトの名無しさん:03/08/18 23:00
MinGW用の libgcj のダイナミックライブラリ(dll)が出ました。
MinGW GCJ の欠点として、ライブラリがスタティックリンクされるため、
生成される実行ファイルが非常に巨大になるという問題がありましたけど、
ダイナミックライブラリが出てきたことで、この問題が解消します。

http://www.thisiscool.net/gcc34-20030802-dll.zip
>>76
ありがたいっす。

ところで、Windows 用(っつか case sensitive でないプラットフォームの) GCJ は
(case sensitive なプラットフォームで)クロスコンパイルしないとビルドできないのは変わって無いっすか?
おそらくね。メーリングリスト見てても Windows用GCJをコンパイルしている人は
みんな Linux でクロスコンパイルしてるね。
Cygwin でコンパイルに成功した例は聞いたことないです。
79デフォルトの名無しさん:03/09/23 12:46
GCJってメモリーリークが激しい気がするんだけど。
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
8281:03/10/12 12:15
自己解決しました。
MinGWとgcjで微妙にバージョンが違うのが原因だったみたいです・・・
http://www.shudo.net/diary/2003oct.html#20031015
にも書いてあるけど 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ファイルが無くても同じ例外が出てしまいます。
>>84
javax.sound が使用する DLL とかは調べた?
8684:03/10/22 12:43
>>85
レスありがとうございます。
jsound.dllだと思います。
コンパイル時にオプション-Lで指定しました。
コンパイル時も実行時もエラーが出ないので
dllまわりはOKだと思うのですが。。
>>84
んじゃ、com.sun.media.sound パッケージが無いとか。
8884:03/10/22 23:18
>>87
それが原因のようです。
使っているファイルを発見しました。
どうもありがとうございます。
途中経過を報告しますと
rt.jarを使ってコンパイルしようとすると
コンパイラの内部エラーがでます。
もうすこし考えてみます。
8984: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が出て止まります。
これは何が悪いのでしょう?
>>89
"warning: exception handler inside code that is being protected" でぐぐったら

http://gcc.gnu.org/ml/gcc-patches/2002-08/msg01637.html

が見つかった。

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

その人の gcj のメーリングリストへの投稿
http://gcc.gnu.org/ml/java/2003-10/msg00264.html
9284:03/10/23 18:43
>>90
>>91
親切にレスしてくださって、
ありがとうございます。
早速、参考にして調べてます。
93デフォルトの名無しさん:03/10/24 01:28
>>81

自分も同じ問題がおきたんですが同じバージョンのMinGWとGCJがあるんでしょうか?
探してみたんですけど見つけられなかったんですが・・・
9481:03/10/25 01:48
>>93
バージョンが書いてないのでなんとも言えないけど、GCJ3.3.1なら
下のサイトにあるMinGW base kit, bitWalk build #037をいれたらいけたよ。
http://b2c-1.rocketbeach.com/~bitwalk/index.html
9593:03/10/25 03:57
>>94

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

紹介していただいたサイトのminGWをインストールし、
38さんの解説ページ通りにSWTを使ったプログラムをコンパイルできました。
保守
97デフォルトの名無しさん:03/11/25 01:03
http://page.freett.com/gikob/gcj/japanese.txt

>>67を参考にコンソールに日本語を表示することに成功したのでメモを残しておきます
ほとんど>>67の書いていることをそのままな流用したため勝手に載せていいのか判断に迷ったので
このスレ以外にはリンクを張っていません・・・
HTML化は時間があればやります
9897:03/11/25 01:24
念のためもう一度試してみたらどうも-Dオプションが一つしか認識しないっぽくて
うまくいかなかったので直しました_| ̄|○
9997:03/11/25 07:47
>>98は勘違いみたいなのでなかったことにしてください_| ̄|○
10097:03/11/26 02:00
http://big.freett.com/gikob/jpsample.zip

gcjで日本語を扱うサンプルをいくつか作ってみました(2.7Mほど)
101デフォルトの名無しさん:03/11/26 11:34
おつ!
10267: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 に変換できるはず。
10397 = 41 = 38:03/11/26 21:52
>>102
すみません、説明不足でした
NativeTestは、Javaから渡した日本語の文字列をネイティブ側からString#getBytes()を使ってSJISの文字配列に変換し、
printfで表示できるかどうかを試したサンプルです
これができると移植性を保ちつつJavaとCの間で文字列をやりとりしやすくなるので試してみました

漏れの環境ではうまくいったのですが
うーん、JNIは難しい・・・
10497 = 41 = 38:03/11/26 22:41
>>97の内容をHTMLにしてアップしました

http://freett.com/gikob/gcj/japanese.html

>>67さん
>>97にも書いたとおり肝心の方法がほぼそのまま>>67を流用したものなんで
勝手に載せていいのか判断に迷っていて今のところこのスレにしかリンクを張っていないんですが、このまま目次(http://freett.com/gikob/gcj/)からリンク張ってもよろしいでしょうか?
10567:03/11/26 23:01
>>103 NativeTest はちゃんと動いたよ。ただ、Console/Test.java と
何が違うのか分からない。ただ、JNI でオーバーヘッドを
増やしているだけだと思うんだけど。移植性を保つというのも…。
良かったら、もうちょっと説明してくれませぬか。

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

GCJ関係のリンクに http://gcc.gnu.org/ml/java/ があると良いかも。
gcj3.4 のおっかけをするなら必須だと思われ。
10667: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 なんかと同様に一緒にリンクするだけ。
10797 = 41 = 38:03/11/27 01:07
>>105
変換した文字配列はprintfに限らずchar*を引数にもつ関数にそのまま渡せるんで本質的にはConsoleとは違います
byte[]を引数にしてgetBytes()したbyte配列を渡してもいいのですが
(今考えるとそのほうがオーバーヘッド少なく済みそうな気もします・・・)
gcjでもJavaのメソッドを呼べるのか試してみたかった気持ちがあったのと
>>97,>>104の方法がJNI経由でも有効なのかどうかを確かめるものなので
ああいうサンプルになりました

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

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

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

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

>>106
CNIについて書いていた頃に試してうまくいかなかった記憶はあるのですが
いつのまにか出来るようになっていたんですね
また時間があれば試してみます
10897 = 41 = 38:03/11/29 03:37
http://freett.com/gikob/gcj/jni.html
JNIについてメモを書いてみました
中身はCNIのメモとあまり変わっていないけど・・・_| ̄|○
109デフォルトの名無しさん:03/12/21 01:42
Redhutの後継のFedora ProjectのFedora Core 2のロードマップで
....more Java software using gcj (Ant, Tomcat, Jakarta, Eclipse, .....
ってあるけど、
http://fedora.redhat.com/participate/schedule/
最近のgcjどうなの?ネイティブ化するとそれなりに高速化されるのだろうか・・・
「D」が出ちゃったから立場が微妙だな...
Javaに似た文法だがあっちはC言語のライブラリ使えるし
テンプレートもあるし。
> Javaに似た文法だが
112106:03/12/21 12:24
ひさしぶりに来てみた。

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


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

> JavaVM無いと動かないんでしょ?これ
exe 単体で動くけど。
115デフォルトの名無しさん:03/12/21 18:03
>>114
んなこと言わずに教えてくれよ。


>exe 単体で動くけど。
そうなんだ。
116115:03/12/21 18:04
>JavaVM無いと動かないんでしょ?これ
つーか>>29見ればわかるか
スマソ
117デフォルトの名無しさん:03/12/21 18:05
ソースを見るより、gcjの吐いた機械語を見たほうが早いと思われ。

多分、起動時に、libgcjに実装されてるgcスレが立つんじゃないの?
gcjってboehm-gc使ってるって聞いたけど違うの?
119デフォルトの名無しさん:03/12/24 01:42
誰も使ってないの?
ネイティブコンパイルに魅力を感じないので使ってない。
必要に迫られたら使うあるのみ
>>120
実行環境が何メガもあってバージョン間の相性もあるとなれば
配布にも支障をきたすし、
ベンチマーク取られるようなソフトにはアウト。
これはかなりの障害だよ。
いまどきLinux−MacOSX−Windowsのクロスプラットホーム環境で
ソース互換の開発環境だってあるんだし、SunのJavaが
実行形式吐かないのはゆゆしき問題だよ。
>>121
実行形式ならC++とか使えばいいと思うのだが。
>>121
要は各プラットフォームで共通に使えるGUIライブラリとかがほしいってことじゃないの?
>>122
それだともはやPCではJavaに出る幕はない。
アプレットの動く環境からユーザーは離れつつある。
全部C++でイケルんだよ。
> アプレットの動く環境からユーザーは離れつつある。
アプレットも細々と使われてるけどね。

アプレットの一時的な流行(?)が終わったのは何年も前の話しだし。
126デフォルトの名無しさん:03/12/25 23:03
Javaはサーバ向けだろもはや。
TigerからはclientVM無くなるって話だし。
127デフォルトの名無しさん:03/12/25 23:03
GUIが(体感的に)遅いのがマズかったよなー。
あれだけ抽象度が高いGUIをVMでやろうという心意気はいいけど、
盛り込みすぎだよなぁ…。
>>126
1.5.0-beta-b31 の段階では client と server フォルダ両方あるけど。
>>122-129
ここは GCJ スレなのでそーゆー話題は死滅スレにでも逝ってやってください
>>137
サーバーならg++でいいじゃん。
gnu cgiccはマルチパート対応でアップローダも書けるし、
固定長バッファも使用しないから
バッファオーバーフローも起きない。
なによりboostを始めとして開発環境が超強力。
137に期待がかかりました
133デフォルトの名無しさん:03/12/25 23:34
>>129
あれ?あった?
無いのはIA64版だったかなぁ。失礼。
ネイティブなクロスプラットフォームGUIを作成する(再考)
http://www-6.ibm.com/jp/developerworks/java/030711/j_j-nativegui2.html

(English >>18)
135デフォルトの名無しさん:04/01/06 15:08
>>137期待age
だれが>>137や!
137 ◆AEqcy/sQU6 :04/01/06 20:49
あたい




           世界は核の炎に包まれた



cygwinでも簡単にgcj使えるね。

ttp://freett.com/gikob/gcj/gcjswt.html

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

gcj --jni -mno-cygwin -c --classpath=swt.jar swt.jar
だれかJFaceでWin32ネイティブコンパイル成功しましたか?
いろいろ試したんですが、ApplicationWindowを使うと即死・・・
Actionのサブクラスなら大丈夫でした。ちなみにWin2K、WinXPです。

あと、これは別なんですがアイコンファイルとかを実行ファイルに
埋め込むことは可能なんですかね?
試してないけどアイコンを定義した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)です。
エラーメッセージ見る限りでは今Linuxにあるglibcとlibgcjをビルドしたときに使ったglibcのバージョンが違うってことじゃない?
144142:04/01/20 08:06
>>143
今、SuSE9.0のデフォルト使ってるんです
ひょっとして、libgcjをりビルドするって
こと?ですか
145デフォルトの名無しさん:04/01/20 13:49
gcjでバイトコードを生成することもできるの?
それとも、普通にSunのjavac使わないとだめ?
>>145
gcj -Cでバイトコード作ってくれる
>>146
となるとgcjで普通にアプレット作ったりとかも
出来るわけですね。
>>147
うーん、試したことないけどできるんじゃないかな?
実行はブラウザかSunJSRのアプレットビューアーじゃないとダメだろうけど
149デフォルトの名無しさん:04/01/29 15:27
gcjでJCEを使ったコードをコンパイルしたいのですが何か方法はないでしょうか。
単純にjce.jarをコンパイル使用としてもだめでした。。。
どこで撥ねられてるんだ
age
フルスクリーンアプリ作れますか?
SDLとかOpenGLのラッパ使えば出来るかもね
>>152
java.awt.GraphicsDevice#isFullScreenSupported() がtrueなら
java.awt.GraphicsDevice#setFullScreenWindow(Window w) でフルスクリーン。

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

>>153
gcj って awt をあんまりサポートしてないのにできるんだ?
JSDL以外で公開されてるJavaのSDLラッパーってある?
>>157
cni使って自分でラップしたら。jni使ったことあるならcniには感動するぞ。
159デフォルトの名無しさん:04/03/21 13:53
質問します。

>>50-51さんが書かれていた現象と同じ状況に陥っています。
http://page.freett.com/gikob/gcj/gcjswt.html のやり方に従い、
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
http://www.thisiscool.com/gcc_mingw.htm
を用いたほうがいいのでしょうか。

なにか勘違いしてたらご指摘お願いします。
>>159 自己レスです。

http://www.thisiscool.net/gcc34-20040320.tar.bz2
あの後上記サイトにあるmingWのgcc/gcj詰め合わせ↑をDL&解凍し、
そちらにPATHを通し再度プログラム生成を行いました。

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

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

161159:04/03/21 19:32
また、SWTサンプル集
http://amateras.sourceforge.jp/cgi-bin/fswiki/wiki.cgi/swt?page=FrontPage
内のプログラムをコンパイルしてみましたが、
gcj LabelSample1.java --main=LabelSample1 -I. -Iswt.jar swt.o -o LabelSample1
こちらも実行できました。しかし文字化けしてしまいました。

そこで再度スレの内容を確認し、>>67さん、>>97さんの書き込みに気づき、
http://freett.com/gikob/gcj/japanese.html のページを参照し、

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実行中にいくつかプロンプト画面が立ち上がるのが気になりますが・・)

ありがとうございました。
gnome-gcjってどうやって使うの?
なんかいまいちわからん
gcj でコンパイル時に
-Duser.language=ja -Duser.region=JP
とか指定すると locale を切り変えられるんだけどこれって他の
方法はないのでしょうか??

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

thisiscool の gcj を使ってます。
164login:Penguin:04/05/15 00:00
>>163
変だね。
とりあえず、ホームディレクトリの.i18nファイルに
LC_ALL=ja_JP
って書いておけば、次回起動時から反映されるかも
lwjglを試してみたがどうやらgcj側のバグで動かないらしい・・・orz
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年分に相当)

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

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

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

詳しくわ↓
http://mobius1.nobody.jp/
http://blog.livedoor.jp/team_lifeline/
>>166
エラーで終ったんならエラーメッセージくらい書いてくれないと…
エラーメッセージもなしに誰が答えられるってのよ…?

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

<apply executable="echo" dir="${basedir}">
とかに書き換えて期待した通りの引数が渡っているかどうか
を確認するとかはどうよ?
169166: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
>>166
main が参照している
nippon.tokyo.dreamtheater.smaf.SMAFMake
クラスが見つからないってことね…

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

だから複数の *.java があるとクラスが見付からなくてエラーになる
>>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>
172166:04/06/04 23:23
>>170-171
ありがとう。
<apply>にparallel="true"を追加することで
正常にコンパイルできました。
173162: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:
174126:04/06/19 21:37
みんなGCJでGUIは何のツールキット使ってるのよ?
HelloWorldで日本語出なくて諦めますた。へっぽこでごめんね。
176176:04/06/19 22:47
>>175
本当に出ないのかって今試したら
普通にでたんだけど?
>>174-175

せっかくなんで宣伝しときますw
http://page.freett.com/gikob/gcj/index.html
仕切りみたいになってるけど一応
gcjはWindowsのものでもthisiscoolのgcjとmingw公式のgcjとcygwinのgcjがあるんで
どれか明記したほうがいいよ
179176:04/06/20 00:44
>>178
世の中の10%はWindowsを使っていないってこともあるし、
俺もその10%に入るので、せっかくの情報もあまり関係ないことに。

う〜ん。やっぱりSWTで作るべきかなぁ〜?
http://www.google.co.jp/search?q=gcj+toolkit&ie=UTF-8&hl=ja&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=
これだけあるけど、Swingの代わりってどれがいいんだろう?
>>179
LinuxならGNU classpathがあるけどあれってまだAWTだけだったかもしれん・・・
>>179
> 世の中の10%はWindowsを使っていないってこともあるし、
> 俺もその10%に入るので

そうだったらなおさら明記すべきだと思うが・・・
182デフォルトの名無しさん:04/06/29 22:16
umm-
gui toolkitがどれもこれもうまくインストールできない。

しょうがないので自作しようと思うが、
swingでいうところの、
JWindow,JFrame,JButton,JLabel,JCheckBox,JRadioButton,JTextArea,JTextFieldと
レイアウトマネージャさえあればいいのかしら?
gcjでjavaのメソッドをjni経由で利用できるのかな?
>>184 両方向とも問題なくできるよ。
186デフォルトの名無しさん:04/07/20 07:10
>>185
そうすると、jni経由でSwingも使えるかな?
やってみるか
出来るけどさほど大した意味はないな
>>186
そもそも gcj でまともに動く Swing があるのか,と…
ほー、c/c++ などのツールキットとして Swing を使うのか。
おもしろいけど、使い物にならないんだろうな。
わからないので聞きます。

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 {
191190: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 **/
192191: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が見付からないみたいですが、それがどこにあるのか見当がつきません。
man 3 memmove とか?

194192: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ってのが足りないんだと思う。
196195:04/09/04 00:26
> man memmoveででてくるやつとは関係ない。

補足。完全に関係無いって訳ではなく、JNIから呼ばれるmemmove内から、
man memmoveに出てくるやつが呼ばれてるはず。だけど、今回の問題とは
関係ないってこと。
197デフォルトの名無しさん:04/10/02 16:54:16
http://page.freett.com/gikob/gcj/gcjswt.html
↑の手順でやっても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

入ってますたが、もっと分かりやすい見分け方はないんですか?
199197: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です。

http://gcc.gnu.org/java/faq.html#1_1
> 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
http://gcc.gnu.org/java/faq.html#1_1
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
http://savannah.gnu.org/cgi-bin/viewcvs/gcc/gcc/libjava/LIBGCJ_LICENSE?rev=1.2.2.1&content-type=text/vnd.viewcvs-markup
例外規定
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より
http://gcc.gnu.org/ml/java/2003-11/msg00300.html
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
222デフォルトの名無しさん:04/12/24 13:40:44
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でコンパイルできる
ようにしたものの集合…かなぁ?

扱っているライブラリの一覧は
http://sources.redhat.com/rhug/index.html
で見れるはず…
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
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デフォルトの名無しさん:2005/03/31(木) 19:48:45
>>252 何が?
254デフォルトの名無しさん:皇紀2665/04/01(金) 02:12:49
ttp://slashdot.jp/developers/05/01/15/0637223.shtml
ttp://slashdot.jp/developers/05/03/19/1544241.shtml
↑ここいら辺の記事読むと、gcjでeclipseをnative compileとか
書いてあるけど、ちょっと、そそられない?

#eclipse、まったく使えて無いのだけど、、。
255デフォルトの名無しさん:2005/04/10(日) 12:21:22
なんでIDEが必要なのかがわからん。
便利さがあると思うけど、その分重くなっているのなら意味がないと思うんだよね、僕は。
256デフォルトの名無しさん:2005/04/11(月) 19:31:33
キリ番なのでAGEます。
257デフォルトの名無しさん:2005/04/11(月) 21:11:15
キリ番なのでAGEます。
















257進数で。
258デフォルトの名無しさん:2005/04/11(月) 21:45:21
Javaの文法は好きなんだがVMはちょっとなぁ
というオレに最適な
259デフォルトの名無しさん:2005/04/11(月) 22:55:35
>>258
gcj使って単独で動く実行ファイル作ってもVM内臓か外付けか、
の違いしかないと思うが。もしくはGPLマンセーか、Sunが嫌いか、
みたいな政治的(?)な動機とか。
260デフォルトの名無しさん:2005/04/11(月) 23:00:55
>>259
jreのインストロールさせるのマンドイ
というのも理由のひとつにしようと思っていた。
だが
261デフォルトの名無しさん:2005/04/13(水) 00:36:12
>>254
See "Native Eclipse - The Fast and the Furious IDE" section in
http://developer.classpath.org/mediation/ClasspathShowcase
262デフォルトの名無しさん:2005/05/02(月) 22:40:34
age
263デフォルトの名無しさん:2005/05/05(木) 21:34:15
jikesもエエヨー
264デフォルトの名無しさん:2005/05/07(土) 21:26:06
ん?どういうことぉ?
265デフォルトの名無しさん:2005/05/07(土) 21:26:51
 
266デフォルトの名無しさん:2005/05/07(土) 21:35:24
jikes自体はネイティブアプリケーションだけど、gcjみたいにネイティブ
コードを吐けるわけじゃないのにな。
267デフォルトの名無しさん:2005/05/10(火) 03:54:04
>>266
まぁそうだけど…
gcj自体はクラスファイルを生成できるネイティブアプリケーション
でもあるので jikes と競合しているといえなくもない…

# あれ? じゃあ gcj だけでいいじゃんってことにな(ry
268デフォルトの名無しさん:2005/05/10(火) 22:55:18
アパッチのメンバーら、「Project Harmony」でオープンソース版J2SE開発へ
http://japan.cnet.com/news/ent/story/0,2000047623,20083372,00.htm

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

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

早くSWINGの実装してほしいな。僕には無理だから。
270デフォルトの名無しさん:2005/05/11(水) 09:53:13
> ニュース-ソース [news source]<
>
> 情報源。

情報源っつー事は…… Apache Foundation?
それとも Harmony の提案があったメーリングリスト?
271デフォルトの名無しさん:2005/05/11(水) 12:08:38
>>269
そんな貴方にclasspath
272デフォルトの名無しさん:2005/05/11(水) 12:55:37
>>269
本当にやるんなら gcj とか classpath とは競合するだろうから、
少なくともやる気とか競争心の部分で寄与してくれると思うよ。

それに Apache License v2 は GPL より緩いライセンスだから、
gcj とか classpath から見たら、Project Harmony の成果物をパクり放題。
実際にパクるかは別だし、まだ何も無いけど。
273デフォルトの名無しさん:2005/05/11(水) 15:13:05
http://www.kaffe.org/~stuart/japi/htmlout/h-jdk14-classpath.html
をみると Swing も 半分以上は出来てるのか。
ダメっぽいのは metal LAF とか、text関係(HTMLも)とかぐらい?

>>271
gcj が使ってるのは基本的に classpath だろ。
gcj の方で若干手を入れてるかもしれんが。
274269:2005/05/11(水) 22:58:57
>>271-273
よくわかってないんだけど、classpathはGCJに含まれているみたいなことをどっかで呼んだんだけど、gcj?(GCC?,GPL?,FSS?)バージョンのclasspathが入ってるってことなの?
別途、classpathをインストロールすればswingとかでアプリ組めるってこと?
275デフォルトの名無しさん:2005/05/11(水) 23:32:27
>>274
classpathのAWTって確かGTK+ベースのやつしかないんじゃなかったっけ?
276274:2005/05/11(水) 23:52:33
thx
今、Gnome使ってるからちょうどいいな。
調べてみます。
277デフォルトの名無しさん:2005/05/12(木) 00:32:01
http://www.kaffe.org/~stuart/japi/
って、100%完成ってでててもコンパイルが通るだけで実行ができないものも含まれてるよね?
278デフォルトの名無しさん:2005/05/12(木) 21:27:15
>>268
http://gcc.gnu.org/ml/java/2005-05/msg00093.html
> 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デフォルトの名無しさん:2005/05/12(木) 22:58:12
>>278
例えば(広告条項のない)Apache License 2 ならば、その成果をGPLなソフトに取り込む
のは問題ないよね。そういう意味で互換性のあるライセンスでやる(やってほしい)ってこと
じゃない?
280デフォルトの名無しさん:2005/05/13(金) 00:33:15
>>279
それだと完全な一方通行になるから share resources とは言わんのでは?
281デフォルトの名無しさん:2005/05/13(金) 01:24:17
例外条項で調整するのかな。
http://www.gnu.org/software/classpath/license.html
282デフォルトの名無しさん:2005/05/13(金) 01:26:09
そうだとすると、例外条項って何でもアリになってくるな。
すでに何でもアリになってるけど。
283デフォルトの名無しさん:2005/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デフォルトの名無しさん:2005/05/15(日) 15:38:52
-lエクリプス(swt?)が抜けてるのでは?
違ってっても文句は言わずに。
285デフォルトの名無しさん:2005/05/20(金) 23:14:07
>>284
全然関係なかった。隣家に渡すオプションが必要だった。
あと、やっぱりコンパイル時にジャンプ先を確定しないよう
indirect-dispatchを指定するとか、幾つか工夫がいる。

libgcjやswtをLD_LIBRARY_PATHに通しておいたら、
バイナリのサイズは数十キロだけだし、GTK使ってるから日本語も問題ない。
同じソースで、windowとlinuxでnativeなguiを使ったバイナリが生成できるのは
最強だな。
286デフォルトの名無しさん:2005/05/21(土) 00:14:12
ネイティブなのに速度ではHot Spotに遠く及ばないという理不尽さをのぞけば最強だ。w
287デフォルトの名無しさん:2005/05/24(火) 18:37:51
>>286
実行ファイルのイメージがネイティブであるとかないとかってのは速度にあんまし関係ないからねぇ。
288デフォルトの名無しさん:2005/05/24(火) 18:55:33
Windowsなら(サイズでかくなるけど)ランタイムの配布が不要なのは一応メリットになるが
他のOSではどうなんだろう?
289デフォルトの名無しさん:2005/05/24(火) 19:49:53
静的にも動的にも結合できるから問題ない。
動的な場合、libgcjをインストールさせればよい。
UNIX系の場合、
290デフォルトの名無しさん:2005/05/25(水) 13:03:36
ってか Linux や BSD で最近の gcc が入ってれば大抵 libgcj は
入ってるはずだし…

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

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

ゲームとかは… やっぱ C++ や D 言語の方が向いてる気がするなぁ…
291デフォルトの名無しさん:2005/05/25(水) 22:27:45
>大抵 libgcj は 入ってるはずだし…

ところがギッチョン入ってなかったりする
292290:2005/05/26(木) 14:03:07
>>291
そんな環境もあるかもなー,という気はしてた…
具体的にどの環境で入ってなかったのか晒してくれるとみんな参考になるかも?
293291:2005/05/26(木) 21:33:46
>>292
ここ数年LinuxのFTP版(無料)のディストロをアップデート期限まで使用しては
乗り換え〃してるからどれがそうだったかははっきり覚えてなけど、
Linuxのディストロによっては元からインスロールイメージに入ってなかったり、
標準ではインストールされないものがあった。
まぁでもソースからインスソールさせればいいのかなぁ。
294290:2005/05/27(金) 14:43:16
そのディストリビューションは最近のgcc(3以降くらいか?)なんだよねぇ?
295デフォルトの名無しさん:2005/05/27(金) 14:46:28
古いlibgcjなんかが入ってると、かえって迷惑ってこともあるわな。
現状ではスタティックリンクがお勧めかな。
296デフォルトの名無しさん:2005/05/27(金) 15:22:35
g++ + boehm GCで書くのとgcjで書くのとでは、パフォーマンス的には同じよーなモノなのでしょーか?
後、バイナリサイズ的にはいかがでしょう。
297デフォルトの名無しさん:2005/05/27(金) 15:49:44
自分で計れよ。バイナリサイズなんて何を使うかで全然違ってくるだろ。
それからg++ + boehmがJavaのように使えると思ったらかなり間違いだ。
298デフォルトの名無しさん:2005/06/02(木) 21:26:08
Linuxで作って、Windows用バイナリーを作る方法教えてください
299デフォルトの名無しさん:2005/06/02(木) 22:40:45
1.Linuxで書いて、Windowsでコンパイル
2.Wineでコンパイル
3.Mingwnでコンパイル
4.ソース眺めながら脳内コンパイル
300デフォルトの名無しさん:2005/06/02(木) 22:54:13
5. バイナリエディタで作る
301デフォルトの名無しさん:2005/06/03(金) 00:37:51
6. Linux側にクロス環境を構築する。
302デフォルトの名無しさん:2005/06/03(金) 01:34:52
5は3、6は4と言ってる事たいして変わらんね
303デフォルトの名無しさん:2005/06/03(金) 01:35:17
逆だった・・・
304298:2005/06/03(金) 06:43:14
>>301の6の方法がいいですが、何を準備すればいいでしょう?
と、いうかWindowsは職場にしかなく、Linuxは自宅にしかなく、
会社の規定でWindows側に開発環境を持ち込めないのですが、
どうしてもちょっとしたソフトが必要になっています。
305デフォルトの名無しさん:2005/06/03(金) 13:13:12
ぐぐってみた。
ttp://bitwalk.hp.infoseek.co.jp/
ためしてはいない。
306デフォルトの名無しさん:2005/07/08(金) 21:40:38
gcjでant使えるようにえれーいろいろコンパイルして
動くまでいったらant.exe 32MBでした。以上です
307デフォルトの名無しさん:2005/07/09(土) 02:34:31
ネイティブ言語なら、動的/共有ライブラリにして外出しされる部分だろうな、サイズを増加させてるのは。
308デフォルトの名無しさん:2005/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デフォルトの名無しさん:2005/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いかすね!バグみっけたら俺の園児レベルの英語でばんばんパッチ送っていくぜ
3101段ずれたのはご愛嬌:2005/07/09(土) 23:41:04
ant.exe+jikes.exeちょっぱやっすよちょっぱや
311デフォルトの名無しさん:2005/07/18(月) 07:51:53
>76
の作り方教えて欲しい
312デフォルトの名無しさん:2005/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デフォルトの名無しさん:2005/08/10(水) 12:23:36
MinGW 環境での gcj用の SWT のビルド手順と
MinGW gcc3.4.4 用のバイナリパッケージ.

ttp://hoeppie.gmxhome.de/SWT/
314デフォルトの名無しさん:2005/08/28(日) 15:42:18
Cygwinのgcj使ってるんだけど

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

普通にReader、Writer使って動いてたたclassをEXE化したら
化けて全然使えないんだけど。
315デフォルトの名無しさん:2005/08/28(日) 16:26:25
>>314
new InputStreamReader(inputstream, "SJIS ");
new OutputStreamWriter(outputstream, "SJIS ");
316314:2005/08/28(日) 19:28:38
ぬ、
素人だと思って馬鹿にしてるな
こちとらUNIX系は素人だけど
Javaは1.0のころからやってんだこんちくしょうべらぼうめ。

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

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

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

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

317314 テストソース:2005/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);
  }

318314 テストソースつづき:2005/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();
  }
319314 テストソースつづき2:2005/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デフォルトの名無しさん:2005/08/28(日) 19:39:15
>ってexeに変換したら全然だめなんですよ。
当たり前じゃん
そこまでネイティブに無料で変換できるのであればJETなど買う奴いない
gcjのサポートしているAPIを読め
321314:2005/08/28(日) 19:48:43
>>320
>当たり前じゃん
>そこまでネイティブに無料で変換できるのであればJETなど買う奴いない

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

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

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

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

ちょっと待ってくれよ、そこまでコンパイルオプション知っていて尚且つJava暦長いのなら
GCJのDoc当然読んでいると思ったよ
324デフォルトの名無しさん:2005/08/28(日) 20:05:33
>現在のところ、 libgcjとJava 2プラットフォームの相違点を一覧にしたものはありません。
↑これが重要で しかも[悪]
325デフォルトの名無しさん:2005/08/28(日) 20:18:21
libgcj.aからSJIS周りの.oファイルを取り出して直接リンク。

ところでそれ、テストソースになってない。どこでなにがどう
化けているか確認できないだろ。
326314:2005/08/28(日) 20:28:28
>>323

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

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

うーん。

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

ファイル出力もだめだしSystem.outでコンソールに出しても化け化けでどうにも、、
unicodeをダンプするべきだったすね。
327デフォルトの名無しさん:2005/08/28(日) 20:51:10
(new InputStreamReader(is, WIN_SJIS));
がダメなら
バイトで読み込んでそのままバイトで出すとどうなる?
そうすれば、少なくともWin環境ではコンソールで化けないとおもう
328デフォルトの名無しさん:2005/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デフォルトの名無しさん:2005/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デフォルトの名無しさん:2005/08/28(日) 20:55:13
それ動くか試してないから手直必須
あと org/javacc/parser/Version.oも入れる
331デフォルトの名無しさん:2005/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デフォルトの名無しさん:2005/08/28(日) 21:21:44
http://page.freett.com/gikob/gcj/japanese.html
この方法は使えないの?
333デフォルトの名無しさん:2005/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デフォルトの名無しさん:2005/08/28(日) 22:26:04
>>323
>現在のところ、 libgcjとJava 2プラットフォームの相違点を一覧にしたものはありません。

詳細な比較じゃないけど、パッケージごとのだいたいの比較がここにある:
http://www.kaffe.org/~stuart/japi/
でも、メソッドが用意されていて中身がない場合もあるから、あんまり役には立たないかも。
335314:2005/08/28(日) 23:04:58
おかげさまで>>332
の方法で上手くいったっす。

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

#ていうかリンカオプションとかその辺の問題?
336314:2005/08/28(日) 23:15:48
#サポートしてるエンコード全部リンクするのをよしとしない気持ちもわかるけど
#リンクオプションみたいなので指定させてくれてもいいかなと思った。
337デフォルトの名無しさん:2005/08/29(月) 19:57:31
いろいろ試した限り cygwin の gcj より MinGW 4.1 の gcj の方がずっといい感じ…
libiconvを追加でインストールする必要があるのが面倒だけど,
ソースコードのエンコーディングを gcj --encoding=utf-8 とかで指定できるし
Reader,Writerのエンコーディングも上みたいに面倒なことしなくても使えるっぽいよ?
338デフォルトの名無しさん:2005/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デフォルトの名無しさん:2005/09/17(土) 13:30:24
それから>>332のページ、
> 日本語をそのままJavaの内部コードのUTF-8で出力したからです
って書いているけれど、内部はUCS-2だから、
default I/O encodingの間違いだね。
340デフォルトの名無しさん:2005/09/17(土) 20:53:52
>>338
ちなみにプロパティはコンパイル時に指定する以外に
環境変数GCJ_PROPERTIESで設定することもできる.
$ env GCJ_PROPERTIES="file.encoding=SJIS" ./a.out
みたいに走らすと出力がShift_JISになるはず(gcj3.3.2 on linux にて確認)
341デフォルトの名無しさん:2005/09/17(土) 21:26:30
342デフォルトの名無しさん:2005/09/30(金) 11:55:21
gcj便利なのですがコンパイルする度にすごい時間がかかりますよね。
そこでjavacのようにclassファイルをハードディスクに保存させ、
次回のコンパイル時にはそれを再利用して速度を上げるようなことはできますか?
javacだと変更箇所だけをコンパイルし直すので時間の節約になります。
343デフォルトの名無しさん:2005/09/30(金) 12:35:06
すみません、説明不足でした。
質問したかったことは .class ファイルから生成した .o ファイルなどのようなバイナリを
ハードディスクに保存させる方法です。
344デフォルトの名無しさん:2005/09/30(金) 12:40:25
-c
345デフォルトの名無しさん:2005/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デフォルトの名無しさん:2005/10/01(土) 00:18:14
minGWでcj使おうと思ったら
gcj: installation problem, cannot exec `cc1': No such file or directory
なんて表示された。解決策分かる人いませんか
347デフォルトの名無しさん:2005/10/01(土) 00:33:22
>>346
インストールされてないだけだべ。
348デフォルトの名無しさん:2005/10/01(土) 01:38:25
>>347
ありがと〜gcc-coreのインストしわすれでした。変なところでつまずいてしもた。
349デフォルトの名無しさん:2005/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>>

エラーの発生箇所がつかめないので、スタックトレースを表示させたいのですが可能でしょうか?
それ以外に原因となっている箇所を特定する方法はあるのでしょうか?
350デフォルトの名無しさん:2005/10/03(月) 19:15:29
出ない?シンボル消したとかじゃなくて出ない?
351デフォルトの名無しさん:2005/10/03(月) 20:42:15
>>350

No stack trace availableと表示されて、本物が出ないです。。
gcj で使ったオプションは -fjni -O3 です、、、
どうやればよいのやら。
352デフォルトの名無しさん:2005/10/03(月) 20:46:19
javacのほうはgenerate debugging symbolsを有効にしてあります。
353デフォルトの名無しさん:2005/10/03(月) 21:08:08
354デフォルトの名無しさん:2005/10/03(月) 21:59:02
だめです、、、トホホ。
ここでMain.mainを指定しても認識できませんでした。
やりなれたスタックトレースをつかったデバッグができないのはつらいです。

(gdb) break Main.main
Can't find member of namespace, class, struct, or union named "Main.main"
Hint: try 'Main.main<TAB> or 'Main.main<ESC-?>
(Note leading single quote.)
(gdb)
355デフォルトの名無しさん:2005/10/03(月) 23:43:35
javacがでてくるのが不思議なんだが、もしかしてjavacでいちいちクラスファイル
を生成させてからgcjでAOTコンパイルさせているのかな?
356デフォルトの名無しさん:2005/10/03(月) 23:49:51
こちらXcodeというIDEを使っていましてjavacが使われています。
通常はjarファイルにパッケージして使っています。
そのjarファイルをgcjでコンパイルできるようになればいいのですが、
357デフォルトの名無しさん:2005/10/04(火) 19:13:49
OSXかあ、なんか違うのかな?
手元だと、linux gcj-3.3 or 3.4 でやっても winのgcj-3.4でも、
両方linuxでコンパイルだけどスタックトレースでるよ
当然なんだろうけどシンボル消しちゃうと出ないね、upxでも出なくなる
No stack trace availableはでない、stripかけると
at 0x004c924e (Unknown Source)
at 0x004c9742 (Unknown Source)

ずらーっと単純に表記が番地にかわるだけでスタックトレースは機能はしてる
そのメッセージ見たことない
XCODEって無茶苦茶ハンサムなIDEだね
358デフォルトの名無しさん:2005/10/04(火) 20:15:08
>>357
ありがとうございます。
一応、普通のjavaで起動して動作確認してみたところスタックトレースは表示されます。
なのでjarファイルの中のシンボルは消されていないようです。
問題なのはgcj で書き出しだ.oバイナリです。
コンパイル時に何らかのオプションをつけてシンボルを消さないようにする必要があるのでしょうか?

念のため windows の mingw の gcj 3.4.4 でもコンパイルしてみましたが症状は変わらずじまいです。
359デフォルトの名無しさん:2005/10/04(火) 20:30:20
>>358
Xcodeとの連携や最適化は後で考えろ
とにかく今はXcodeのことはいったん棚に上げて
javacのclassファイルを使わずにjavaソースを直接gcjにかけろ
-gオプションを付け忘れるな
とりあえず最適化(-O3)はやめとけ

慌 て る 乞 食 は 貰 い が 少 な い
360デフォルトの名無しさん:2005/10/04(火) 20:39:45
出ない?

public class A {
public static void main(String[] argv) {
try {
argv[10] = null;
} catch (Exception e) {
e.printStackTrace();
}
}
}

この A.java を保存してカレントで
gcj --classpath=. --main=A -o A A.java
./AとかA.exeとかで出るはずだけど、もし、こゆー事じゃないの?
361デフォルトの名無しさん:2005/10/04(火) 21:38:39
>>360氏の助言を参考にA.javaをコンパイルしてみましたが、、、

user:~/gcj user$ /usr/local/bin/gcj --classpath=. --main=A A.java
/usr/bin/ld: warning multiple definitions of symbol _sqrt
/usr/local/lib/gcc/powerpc-apple-darwin7.9.0/3.4.4/../../../libgcj.dylib(libgcj.5.0.0.dylib-master.o) definition of _sqrt
/usr/lib/libm.dylib(sqrt970.o) definition of _sqrt
/usr/bin/ld: warning multiple definitions of symbol _fabsf
/usr/local/lib/gcc/powerpc-apple-darwin7.9.0/3.4.4/../../../libgcj.dylib(libgcj.5.0.0.dylib-master.o) definition of _fabsf
/usr/lib/libm.dylib(fabs.o) definition of _fabsf
/usr/bin/ld: warning multiple definitions of symbol _fabs
/usr/local/lib/gcc/powerpc-apple-darwin7.9.0/3.4.4/../../../libgcj.dylib(libgcj.5.0.0.dylib-master.o) definition of _fabs
/usr/lib/libm.dylib(fabs.o) definition of _fabs
/usr/bin/ld: warning multiple definitions of symbol _scalbn
/usr/local/lib/gcc/powerpc-apple-darwin7.9.0/3.4.4/../../../libgcj.dylib(libgcj.5.0.0.dylib-master.o) definition of _scalbn
/usr/lib/libm.dylib(scalb.o) definition of _scalbn

と何やらエラーらしき物が表示され

user:~/gcj user$ ./a.out
java.lang.ArrayIndexOutOfBoundsException: 10
<<No stacktrace available>>

起動しても同様にスッタクトレースが表示されませんでした。
-g オプションをつけて、作業中のjavaソースを直接コンパイルしても同様の結果でした。
362デフォルトの名無しさん:2005/10/04(火) 21:43:04
Darwin(Mac OS X)は、バイナリ実行形式がELFじゃなくて、Mach-Oだからなあ。
まだgcjのportingが十分じゃないんでしょ。
Mach-Oのせいでいろいろポーティングが遅れるんだなあ…
ELFにすべきだったと思うよ。
363デフォルトの名無しさん:2005/10/04(火) 21:44:19
それは言える。
364デフォルトの名無しさん:2005/10/07(金) 21:24:41
MinGwのサイトにlibiconvのPORT版のファイルがありますよね。
それをコンパイルしてインストールしたいのですが
手順が解説されているサイトなどご存知ありませんか。
gcjを使おうとするとiconvが必要といわれます。
365デフォルトの名無しさん:2005/10/08(土) 01:48:06
スレ違いだけど、

Max OS XをELFにしてたら、ファットバイナリの仕組が作り直しだから、
PowerPCからIntelへの乗り換えのハードルが高くなったず。
366デフォルトの名無しさん:2005/10/08(土) 01:57:21
>>365
アプリケーションバンドルの実体ってフォルダだから、その気になれば
なんとでもなる気はするけどね。
367デフォルトの名無しさん:2005/10/08(土) 02:19:41
>>364
mingw-port はどれも微妙…というかまず ports 使うためにちょっとだけ準備がいるので
iconv だけなら普通にソース取ってきて./configure && make install した方が楽っぽい.

面倒なら
http://cefiro.homelinux.org/topics/MinGW/setup.html
とかからバイナリ拾って展開しれ
368デフォルトの名無しさん:2005/10/08(土) 03:04:51
369デフォルトの名無しさん:2005/10/08(土) 05:23:30
なんじゃこれ
370364:2005/10/08(土) 09:19:17
>>367
親切な方、どうもありがとうございます。
コンパイル済みのバイナリでやってみます。
371364:2005/10/08(土) 11:01:33
コンパイル済みバイナリを c:\mingw\usrに展開し、
set PATH=C:\mingw\bin;C:\mingw\mingw32\bin;C:\mingw\usr\local\bin;C:\mingw\usr\local\lib
としました。

しかしコンパイルを実行しようとすると -liconv がないといわれてしまいます。

C:\mingw\bin\..\lib\gcc\mingw32\3.4.4\..\..\..\..\mingw32\bin\ld.exe: cannot find -liconv
collect2: ld returned 1 exit status


liconv とlibiconvは違うものなのでしょうか?
それともインストールの仕方が間違っているのでしょうか。
詳しい方が居ましたらご指摘お願いします。
372デフォルトの名無しさん:2005/10/08(土) 11:35:44
リンカがちゃんと見つけられるようにしてる?
373364:2005/10/08(土) 12:49:52
>>372

リンカのことがよくわからなかったのですが、パスが通っていないのかなと思い、
c:¥mingw¥usr¥localフォルダの中身をみていましたら
階層構造がc:¥mingw とそっくりなことに気づき、
そのまま local フォルダの中身をc:¥mingwに上書きコピーしたところちゃんと認識できるようになりました。
強引な気もします。
374364:2005/10/12(水) 22:56:08
mingw版のgcjのバージョン4.0〜をコンパイル済みで配布しているサイトをご存知の方いませんか?
375364:2005/10/12(水) 23:00:26
事故レスです。とおもったらここで見つかりました。
http://www.thisiscool.com/gcc_mingw.htm#gcj40
376デフォルトの名無しさん:2005/11/08(火) 05:24:50
javacc.jar 878,719 byte
gcj -s -O2
upx
javacc.exe 878,080 byte

やるーーー
377デフォルトの名無しさん:2005/12/06(火) 04:51:26
保守
378デフォルトの名無しさん:2005/12/21(水) 02:01:52
ttp://www.cmagazine.jp/contents/200601.html
オープンソース
ネイティブコードを作成するフリーのJava開発環境に注目!!
GCJを使ってみよう
javaの速さに驚いた。
379デフォルトの名無しさん:2005/12/25(日) 23:53:06
>>378
インスタンシング(笑)
380デフォルトの名無しさん:2006/01/04(水) 13:36:01
>>378
なんかいまいちわかんなかったよ
dbtoolとか共有ライブラリの扱いかたとか
381デフォルトの名無しさん:2006/01/04(水) 18:37:12
http://www.tosu.org/download/numberplace.htmlから
ソースを持ってきて、
gcj --main=suudoku.Main -o suudoku.exe suudoku/*.javaとコンパイルして
実行した時と、jdkでコンパイルして実行した時で挙動が違います。

具体的には、ウインドウ上の4と7が、gcjの時だけ、3と6と表示されます。
jdkでは、書いてある通り出ます。

なんか計算ミスがあるのでしょうか?

$ gcj --version
gcj (GCC) 3.4.4 20050721 (Red Hat 3.4.4-2)

$ java -version
java version "1.5.0_03"
382デフォルトの名無しさん:2006/01/04(水) 18:47:03
>>381
おまえ、CPUの種類指定したか?
383デフォルトの名無しさん:2006/01/04(水) 21:23:11
>>382
指定しなければ、今、稼働してるマシン用のものが指定されてることにならないんでしょうか?

ちなみに、クルーソーの700MHz使ってます。
384デフォルトの名無しさん:2006/01/05(木) 22:35:54
>>383
マシンのBIOSとか最新か?
385デフォルトの名無しさん:2006/01/12(木) 08:12:28
>>381
自然対数LOGを求めて、2を底とする対数を計算してるが、
jdkでは4になるところが、gcjでは3.99999999996になる。

t=Double(Math.log(x)/Math.log(2))
この式で、x=10000ならば、t=4となるはず。
しかし、t=3.99999999。。。となる。

暫定策としては、tに0.00001を加えてやればよいのだが?
386デフォルトの名無しさん:2006/01/12(木) 08:54:33
strictfp 使った上に、 StrictMath.log() 使っても改善されない?

あと、4になるのは log(10000) じゃないか?
387デフォルトの名無しさん:2006/01/12(木) 09:02:37
2が底だからt=4になるのはx=16だろ。
388デフォルトの名無しさん:2006/01/12(木) 09:08:01
実は10000は二進法で表現されてたんだよ。

無理っぽいか。 3.99999999 とか十進法使ってるし。
389デフォルトの名無しさん:2006/01/12(木) 12:53:03
>>385
浮動小数点演算の基礎がわかってない
390デフォルトの名無しさん:2006/01/12(木) 15:03:42
SunのJava作った奴等もIEEE 754分かってないよなあ
何故数値計算の専門家を入れとかなかったのかと…
391デフォルトの名無しさん:2006/01/12(木) 22:23:40
>>390
おまえがわかってない。

言語仕様 4.2.4 Floating-Point Operations
http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.2.4

java.lang.Math
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Math.html

java.lang.StrictMath
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/StrictMath.html

ここに出てくるulpが何を表すわかるか?
392デフォルトの名無しさん:2006/01/12(木) 23:27:14
うんこ
393デフォルトの名無しさん:2006/01/15(日) 04:16:48
http://page.freett.com/gikob/gcj/gcjswt.html
上記ページを参考に、SWT.jar から swt.o を生成しようとした時に、
エラーメッセージが大量に出て苦しんでおります。どなたがご慈悲を……

環境
WindowsXP
SWT3.1.1 / SWT3.0.2 (両方試す)
gcc-java-3.4.5 / gcc-java-3.4.2 (両方試す)
gcc-core-3.4.5
binutils-2.15.91
w32api-3.5
mingw-runtime-3.9
gcc-g++-3.4.2


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

org/eclipse/swt/dnd/RTFTransfer.java:97: error: verification error at PC=198
org/eclipse/swt/dnd/RTFTransfer.java:97: error: might transfer control into subr
outine
org/eclipse/swt/dnd/TextTransfer.java: In class `org.eclipse.swt.dnd.TextTransfe
r':
org/eclipse/swt/dnd/TextTransfer.java: In method `org.eclipse.swt.dnd.TextTransf
er.nativeToJava(org.eclipse.swt.dnd.TransferData)':
org/eclipse/swt/dnd/TextTransfer.java:119: error: verification error at PC=348
org/eclipse/swt/dnd/TextTransfer.java:119: error: might transfer control into su
broutine
394デフォルトの名無しさん:2006/01/15(日) 21:48:47
395デフォルトの名無しさん:2006/01/15(日) 22:34:44
最近、
gcj --main=Hello --classpath=/usr/share/java/libgcj-4.0.2.jar Hello.java
ってクラスパス明示的に指定する必要があるのね。
396デフォルトの名無しさん:2006/01/16(月) 00:05:36
>>394
それです。ありがとうございます。

って、
> Unfortunately, this is a gcj bug.
ですか

ちなみに、どなたかSWT3.1で、SWT.jar → SWT.o の変換を成功された方っていますか?
397デフォルトの名無しさん:2006/01/16(月) 00:20:51
gcj-4.0.2 on Linuxなら全く問題なし。
398デフォルトの名無しさん:2006/01/16(月) 00:21:20
>>396
ソースコンパイルしろって書いてあるように見えるけど。
399デフォルトの名無しさん:2006/01/16(月) 00:39:01
>>393
同じくWindows環境でハマった。
SWT2.1.3ならビルドできたけどそれじゃダメかい?

ttp://archive.eclipse.org/eclipse/downloads/drops/R-2.1.3-200403101828/index.php
400デフォルトの名無しさん:2006/01/16(月) 01:20:25
>>393

MinGW で SWT が使いたいって話なら
http://hoeppie.gmxhome.de/SWT/
じゃダメか?
401393:2006/01/17(火) 01:18:19
情報ありがとうございます。助かりました。

とりあえず、SWT2.1.3で動作しました。>>399様、ありがとうございます。
今日はあまり時間が取れなかったので、ソースコンパイルと、>>400様の方法も
明日以降、やってみようと思います。
402デフォルトの名無しさん:2006/02/12(日) 01:01:59
このスレの人って、GNU原理主義者?ただの物好き?
http://www.shudo.net/jit/perf/SPECJVM98-P4.png
わざわざ使う理由が見つからない。
403デフォルトの名無しさん:2006/02/12(日) 01:14:26
>>402
じゃ使うな。さようなら。
404デフォルトの名無しさん:2006/02/12(日) 01:45:41
普通に訊いてるのにそんな意地悪な答えするなよ
405デフォルトの名無しさん:2006/02/12(日) 01:56:03
????普通に訊いてる????
406デフォルトの名無しさん:2006/02/12(日) 04:43:54
>>404
言語障害わずらってるといろいろ大変だね。
頑張れ。
407デフォルトの名無しさん:2006/02/12(日) 05:36:35
>>402はこのスレ住人には触れられてはならない事のようだな。
408デフォルトの名無しさん:2006/02/12(日) 19:39:49
はいはい
409デフォルトの名無しさん:2006/02/19(日) 00:56:42
CygwinでCGJを使ってみたんですが、
ただのHello Worldプログラムが4MBにもなってしまいます。
なんとかなりませんか?
410デフォルトの名無しさん:2006/02/19(日) 01:05:26
strip した?
411デフォルトの名無しさん:2006/02/19(日) 01:55:39
ただのHello WorldくらいCで書け。
412デフォルトの名無しさん:2006/02/19(日) 15:18:48
なんて事を言うんだお前は
413デフォルトの名無しさん:2006/02/19(日) 16:08:09
ただのHelloWorldくらいならアセンブラの方が早いと思う
414デフォルトの名無しさん:2006/02/19(日) 17:31:42
つっこみどころが違う。なぜ Hello World を書くのか考えろ。
いちいち書く気もしないからスルーしてたのに・・・。
415デフォルトの名無しさん:2006/02/19(日) 17:45:25
>>414
> なぜ Hello World を書くのか考えろ。

挨拶のためじゃないのか?
416デフォルトの名無しさん:2006/02/19(日) 17:46:48
Beagleってディスクトップ検索のツールは、Luceneって検索エンジン使っている。
これは元々Javaで書かれていたけれど、
Beagleの使っているのは、C#にポートしたdotLucene。だからmonoが必要。
これってどうよ? > gcj
417デフォルトの名無しさん:2006/02/19(日) 18:04:57
gcjの例外機構ってc++とはなんか違うよね?
どやって実装してんのか知ってる?
418デフォルトの名無しさん:2006/02/19(日) 23:10:30
一緒だよ。
セマンティクスがほんの少し違うだけ。特に静的なセマンティクス。
419デフォルトの名無しさん:2006/03/11(土) 12:20:06
>>402
gcj以外に
JavaをEXEにできる
タダの変換プログラムが
あれば乗り換えたいです。

性能はあまり問いません
日本語処理がまともならば。
420デフォルトの名無しさん:2006/03/11(土) 12:46:57
日本語処理まともじゃん
421デフォルトの名無しさん:2006/03/11(土) 12:54:28
「日本語処理がまとも」の定義がないとなんとも。
422デフォルトの名無しさん:2006/03/11(土) 23:07:19
cygwin の gcj はダメポだがそれ以外の環境ではまともだと思うけどなぁ…
423デフォルトの名無しさん:2006/03/12(日) 02:00:20
問題点の指摘がない→まとも
って進行でいいんじゃない?
424デフォルトの名無しさん:2006/04/15(土) 00:37:36
失礼します、初心者です。
Cygwin入れてSWTやろうとしましたが、
エラーを見るとどうもSWT.jarを読めていないようで…
SWT.jarの置き場所が間違ってるような気がします。どこに置いたらいいんでしょうか?
425デフォルトの名無しさん:2006/04/15(土) 04:18:07
--classpath=パス名で指定しろよ。
426デフォルトの名無しさん:2006/04/15(土) 17:37:36
>>425
classpath指定すると
undefined reference to hoge…
というのが大量に出るようになりますた。
427デフォルトの名無しさん:2006/04/16(日) 01:39:34
必要なところは全部指定しろよ。
428424:2006/04/19(水) 21:22:43
よくわからないので、mingwにして、やろうとしてます。
http://page.freett.com/gikob/gcj/gcjswt.html
を参考にして、とりあえずswt.oを作ろうとしていますがうまくいきません。

org/eclipse/swt.cnc/RTFTransfer.java:97: error: verification error at PC=198
org/eclipse/swt.cnc/RTFTransfer.java:97: error: might transfer control into subroutine




などなど、大量のエラーが出ています。
なにがおかしいのでしょうか。
429デフォルトの名無しさん:2006/04/19(水) 21:34:04
>>428
http://hoeppie.gmxhome.de/SWT/ うちではここ見てMinGWでビルドした
430デフォルトの名無しさん:2006/04/19(水) 22:26:59
えっと、mingwで単なるHelloWorldを表示するプログラムからやり直していますが、
cannot find -liconv
というエラーが出るようになりました

>>429
さらにわからなくなりますた
431デフォルトの名無しさん:2006/04/19(水) 23:54:18
>>430
MinGW の gcj でコンパイルしてできたファイルは libiconv に依存する.
gcj 使う前にまず iconv をビルドしてインストールするかコンパイル済みの
バイナリを拾ってきてインストールしれ.その後 HelloWorld.
432424:2006/04/20(木) 20:40:54
とりあえず、現状を。

MinGWインストーラー付きをインストール
libiconvをインストーラー付きでインストール

cannot find -liconvのエラーは変わらず

どーしよーもなくなってます・・・。
433デフォルトの名無しさん:2006/04/22(土) 17:12:07
gcj の GC 部分って Boehm GC 使ってるのかな?
434デフォルトの名無しさん:2006/04/22(土) 17:18:13
うんそうだよ
435デフォルトの名無しさん:2006/04/23(日) 01:33:15
運送ですか…
436デフォルトの名無しさん:2006/04/23(日) 02:15:32
>>434
ありがとう。
437デフォルトの名無しさん:2006/05/02(火) 01:03:23
だれかお暇なら gcj で例えばどういうコードがコンパイルできないのか教えてください。
将来的にもあらゆる java コードに対応するのは原理的に無理そうってことでいんでしたっけ?
438デフォルトの名無しさん:2006/05/02(火) 03:11:48
http://gcc.gnu.org/java/status.html
http://www.kaffe.org/~stuart/japi/

将来に渡って原理的にサポート不可能なものはない。
439デフォルトの名無しさん:2006/05/02(火) 03:22:15
>>438
JAVAが進化する限りにおいて、gcjは、完全にJAVAに追い付くことはできない。
440デフォルトの名無しさん:2006/05/02(火) 11:18:25
原理主義者は大変だな。w
441デフォルトの名無しさん:2006/05/02(火) 13:01:03
>>439
プロの方ですか?私も同じ意見です。
442デフォルトの名無しさん:2006/05/23(火) 21:54:59
>>439
完全に追いつく必要もないと思うが。
443デフォルトの名無しさん:2006/05/23(火) 22:05:05
実際のところ言語仕様やVM仕様には追い付けるだろうけれど,
無駄に増え続けるクラスライブラリに完全に追い付くことはないだろうな…

もし追いつくとしたらJavaを使う人がいなくなってJavaの肥大化が止った時だろう…

# ぶっちゃけいらないパッケージばっかりなんだよな…
444デフォルトの名無しさん:2006/06/06(火) 14:54:24
SunはほとんどOpenSourceにするみたいだから、
コンパイルすればいいだけじゃない?
445デフォルトの名無しさん:2006/06/08(木) 22:52:23
gcc-4.1.1

make create-headers
make[6]: Entering directory `/hoge/gcc-4.1.1/arm-elf/thumb/libjava'
name=`echo classpath/lib/gnu/awt/LightweightRedirector.class | sed -e 's/\.class$//' -e 's,classpath/lib/,,'`; \
/hoge/gcc-4.1.1/mkinstalldirs `dirname $name`; \
arm-elf-gcjh -d . -classpath '' -bootclasspath classpath/lib $name
/bin/sh: arm-elf-gcjh: command not found
make[6]: *** [gnu/awt/LightweightRedirector.h] エラー 127

ええー。
446デフォルトの名無しさん:2006/06/09(金) 00:01:15
最近はエラーメッセージが読めない奴でもコンパイルするのか
447デフォルトの名無しさん:2006/06/09(金) 00:25:22
>>446
いや、gcjh のビルドすんでないのに使おうとしてエラー出るんだよ。
44833:2006/06/16(金) 14:56:50
gcjでマニフェストファイルを含んだjarファイルをネイティブコードにするには、どのようにしたらいいのでしょうか?
449デフォルトの名無しさん:2006/06/19(月) 13:20:47
C:\> unzip そのjar
C:\> cat マニフェスト
C:\> gcj --main=メイン *.java
450デフォルトの名無しさん:2006/06/19(月) 18:47:12
>>448
ありがとです。
451448:2006/06/19(月) 18:49:08
>>449の間違いでした(汗
452デフォルトの名無しさん:2006/07/03(月) 08:20:41
gcjって何ですか?
453デフォルトの名無しさん:2006/07/03(月) 08:32:37
GNU Compiler for Java の略だっけ?
454デフォルトの名無しさん:2006/07/24(月) 09:56:06
当方Windows2000を使用しております。
NetBeansからgcjを使うにはどうすればいいでしょうか?
一応MinGWでコマンドラインからgcjを利用できるようにはしてあります。
455デフォルトの名無しさん:2006/07/24(月) 12:58:46
456デフォルトの名無しさん:2006/07/24(月) 14:16:37
>>455
謝謝。助かりました。
457デフォルトの名無しさん:2006/08/01(火) 18:29:51 BE:176097672-2BP(10)
すみません、どんなソースコンパイルしてもこんなの出てくるんですけれど。

/mingw/lib/libmingw32.a(main.o):main.c:(.text+0x106): undefined reference to `WinMain@16'
collect2: ld returned 1 exit status

ぐぐってみたりしたんですが、C言語の場合の解決方法しか載ってないんです。
これってどうすればいいんでしょう?
環境はWindowsXP+MinGW gcjです。
458デフォルトの名無しさん:2006/08/01(火) 19:46:38
>>457
コマンドライン晒せ
459デフォルトの名無しさん:2006/08/01(火) 20:35:12
460デフォルトの名無しさん:2006/08/02(水) 14:11:15 BE:805018188-2BP(10)
>>458
>>459
ありがとう。そうか、main指定が必要だったのか・・・

われながらこんな簡単なところでコケるとは情けない・・・・
461デフォルトの名無しさん:2006/08/04(金) 21:38:16
>>460
そんなあなたに

JavaCompiler
http://javacompiler.mtsystems.ch/index.html

/* 主な特徴 */
 - gcj や MinGW 、コマンドラインの知識がなくとも GUI で簡単コンパイル
 - gcj のバージョンは最新版 4.2.0 を使用
 - Linux / Win32 両方のバイナリを出力可能
 - ファイルサイズの削減対応
 - Java 5.0 文法対応

Windows 使いなら是非試してほしい。
462デフォルトの名無しさん:2006/08/14(月) 11:47:12
mingw の最新のgcj 3.4.5でgcj 4.2.0からもってきたlibgcj-4.2.0.jarを
libgcj-3.4.5.jarと差し替えて使用することはできますか?
463デフォルトの名無しさん:2006/08/14(月) 22:56:54
>>462
出来ません
464デフォルトの名無しさん:2006/10/05(木) 22:38:39
>>461
いいねぇ。なかなか使えるよ。UPXでアホみたいに小さくなるし。

GCJでJNIだけど、VisualStudioで作ったDLLは駄目?jvm.dll使わないようにすれば動くかなぁ?
今のところ、jvm.dllを要求されてしまったので、うまくロードできてません。
Direct3DやDirectShowを使ってしまったので、GCCでコンパイルするの面倒かと思って。
465デフォルトの名無しさん:2006/10/07(土) 12:30:51
UPXで小さくしたところで、メモリ上に展開される量はかわらんだろ。
466デフォルトの名無しさん:2006/10/10(火) 16:14:29
>>444
世代別GCだけでもGPLと矛盾しないライセンスで出してくれー>Sun
#今はBoehm GCがgcjの足ひっぱってる気がしてならない
467デフォルトの名無しさん:2006/10/10(火) 23:30:36
>>466
完全にストップ&ゴーするしねぇ…
しかし足を引っ張ってるものは他にもいっぱいありそうだしなぁ…
いっそクラスライブラリも全部 Sun 製のやつに(ry
468デフォルトの名無しさん:2006/10/24(火) 17:09:09
javaCompiler-0.8 で自作 swt アプリをコンパイルして実行しようとしています。
無事コンパイルでき実行すると、
class.forName() を使っているためか、NoClassDefFoundError になります。

classを動的にロードするための設定が必要なのでしょうか?
exe実行のディレクトリー配下に classファイル(jp\xxx\Test.class)は置いてあります。
CLASSPATHにも指定してみました。

http://www.shudo.net/article/Fedora-Core-Expert-200507-GCJ/
 プログラム実行中にClass.forName("クラス名")などとして
 クラスファイルのままのクラスをロード・実行することもできます。
 その場合、ロードされたクラスはインタプリタで実行されます。
とあります。

エラーメッセージは下記です。
Exception in thread "main" java.lang.NoClassDefFoundError: jp.xxx.Test
at java.lang.Class.initializeClass(Main-win.exe)
at java.lang.Class.initializeClass(Main-win.exe)
at java.lang.Class.forName(Main-win.exe)
Caused by: java.lang.ClassNotFoundException: org.xml.sax.SAXException not found
in gnu.gcj.runtime.SystemClassLoader{urls=[file:.\], parent=gnu.gcj.runtime.Exte
nsionClassLoader{urls=[], parent=null}}
at java.lang.Class.initializeClass(Main-win.exe)
...2 more
469デフォルトの名無しさん:2006/10/24(火) 20:13:08
org.xml.sax パッケージがリンクされてないみたいです。
リンクするにはどうすればいいのかな?

gcj でコマンドラインでやりはじめています。
470デフォルトの名無しさん:2006/10/24(火) 20:15:58
新しい・・・
471デフォルトの名無しさん:2006/12/15(金) 17:21:08
472デフォルトの名無しさん:2006/12/15(金) 22:25:23
gcj の開発者な人達は今後どう動くのかねぇ?
473デフォルトの名無しさん:2006/12/16(土) 17:53:56
ネイティブコンパイラに
474デフォルトの名無しさん:2007/01/07(日) 20:55:29
thisiscoolのgcjで簡単なswtアプリを作ると
バイナリサイズが17MB
実行時にメモリを32MB使用する

こんなもんか?
475デフォルトの名無しさん:2007/01/07(日) 22:03:50
-Os -Wl,--strip-all
で縮まんならあきらめるしかないね
476デフォルトの名無しさん:2007/01/07(日) 23:50:31
>>475
サンクスコ
縮まらなかった。
常駐するようなアプリは無理だなこりゃ。
477デフォルトの名無しさん:2007/01/11(木) 12:31:22
4Gのメモリにとってどれくらいの割合か考えてみよう
478デフォルトの名無しさん:2007/01/11(木) 13:04:29
君は実に馬鹿だな
479デフォルトの名無しさん:2007/01/11(木) 13:09:35
馬鹿は実に君だな
480デフォルトの名無しさん:2007/01/11(木) 13:14:21
はいはい
481デフォルトの名無しさん:2007/01/11(木) 13:25:18
全部が「常駐」するわけじゃないし、JREインストールしてもそのくらいストレージは食うし、
実用上はあまり問題ない。問題となるのは「常駐するようなアプリ」ではなく、同じような
アプリが複数起動されたときの無駄だと思う。
482デフォルトの名無しさん:2007/01/11(木) 14:16:36
上の Java Compiler に入ってる strip.exe で20Mが4Mくらいになるよな。8Mくらいだっけ?
483デフォルトの名無しさん:2007/01/11(木) 14:51:14
>>482
--strip-all 付きで生成したバイナリも小さくなるっけ?
484デフォルトの名無しさん:2007/01/11(木) 16:40:34
最適化しようとするとリフレクション&クラスローダー関連が癌だよな

動的プログラミングを静的なバイナリに置き換える事自体が問題なんだろうけど。
485デフォルトの名無しさん:2007/01/11(木) 18:54:32
でもたいていそんな変わったコードはコンパイル不可だから。
っていうか、ちょっと複雑なライブラリーつかうと不可。
486デフォルトの名無しさん:2007/01/19(金) 18:38:02
要するにgcj使うメリットって何もないよね
487デフォルトの名無しさん:2007/01/20(土) 01:56:11
>>486
ないと思うならない。
488デフォルトの名無しさん:2007/01/21(日) 00:09:43
January 8, 2007
Andrew Haley and Tom Tromey of Red Hat merged the gcj-eclipse branch to svn trunk.
GCC now uses the Eclipse compiler as a front end, enabling all 1.5 language features.
This merge also brings in a new, generics-enabled version of Classpath, including some
new tools. All this will appear in GCC 4.3.
489デフォルトの名無しさん:2007/01/21(日) 00:17:30
これMakefile作れないの?
490デフォルトの名無しさん:2007/03/21(水) 13:19:10
cygwinのgcjで作った.exeの巨大さを見て愕然とする。linuxだとそうでもないのに。

思うに、ライブラリをスタティックリンクしているんだろうか?
ダイナミックリンクにする方法は?
491デフォルトの名無しさん:2007/03/21(水) 14:10:19
>>490
そ、そうかな?
linux でのバイナリサイズも大きくてびっくりしたよ。
492デフォルトの名無しさん:2007/03/21(水) 14:14:50
CygwinかLinuxかという問題ではなく、単にバージョンの問題だったりして。
Linuxも以前は大きかった記憶がある。
493デフォルトの名無しさん:2007/03/21(水) 14:20:30
>>490
cygwin mingw だと libgcj のDLLが用意されてなくてかならずスタティックリンクされる。
リフレクションによるDLLからの動的クラスロードとかもできないしwin32環境のgcjはまだまだ。
494デフォルトの名無しさん:2007/04/18(水) 12:11:27
GCJに入ってるJavaのライブラリと、対応するJavaのバージョンってどこで調べられますか?
495デフォルトの名無しさん:2007/04/19(木) 13:11:43
以下のソースをコンパイルすると、例外が出て動かないんですが、原因の分かる方いませんか?

public class test
{
public static void main(String[] arguments) throws Exception
{
String s = "aaa123bbb";
s = s.replaceAll("[a-z]", "hoge");
System.out.println(s);
}
}
496495:2007/04/19(木) 13:13:57
環境は、mingw gcjの、3.4.2と4.3.0で試しました。
例外は次のように出ました。

Exception in thread "main" java.lang.ExceptionInInitializerError
at java.lang.Class.initializeClass(/datal/gcc/gcc/libjava/java/lang/Object.java:513)
at gnu.java.util.regex.RE.getLocalizedMessage(/datal/gcc/gcc/libjava/classpath/gnu/java/util/regex/RE.java:262)
at gnu.java.util.regex.RESyntax.<clinit>(/datal/gcc/gcc/libjava/classpath/gnu/java/util/regex/RESyntax.java:345)
at java.lang.Class.initializeClass(/datal/gcc/gcc/libjava/java/lang/Object.java:513)
at java.util.regex.Pattern.<init>(/datal/gcc/gcc/libjava/classpath/java/util/regex/Pattern.java:76)
at java.util.regex.Pattern.compile(/datal/gcc/gcc/libjava/classpath/java/util/regex/Pattern.java:153)
at java.util.regex.Pattern.compile(/datal/gcc/gcc/libjava/classpath/java/util/regex/Pattern.java:135)
at java.lang.String.replaceAll(/datal/gcc/gcc/libjava/java/lang/String.java:998)
at test.main(D:/workspace/Test/src/test.java:0) Caused by: java.util.MissingResourceException: Bundle gnu/java/util/regex/MessagesBundle not found
at java.util.ResourceBundle.getBundle(/datal/gcc/gcc/libjava/java/util/ResourceBundle.java:372)
at java.util.ResourceBundle.getBundle(/datal/gcc/gcc/libjava/java/util/ResourceBundle.java:243)
at gnu.java.util.regex.RE.<clinit>(/datal/gcc/gcc/libjava/classpath/gnu/java/util/regex/RE.java:133)
at java.lang.Class.initializeClass(/datal/gcc/gcc/libjava/java/lang/Object.java:513)
...8 more
497デフォルトの名無しさん:2007/06/25(月) 20:28:45
>>461
ありがとう!!!
498デフォルトの名無しさん:2007/06/25(月) 21:10:09
>>494
対応するバージョンはよく分からないけど、最新版のGCJでどのクラスが
実装済みなのかは次のページで分かる。

http://developer.classpath.org/doc/overview-summary.html

ここのページに記載されていないクラスは未実装。
499デフォルトの名無しさん:2007/09/26(水) 11:56:27
mingw の gcj 使っているのですが,gcjでコンパイルされた静的ライブラリをリンクする時に
静的ライブラリ内の特定のオブジェクトファイルを強制的にリンクする方法ってないでしょうか?
静的ライブラリ内にあるメッセージリソースをコンパイルしたものがライブラリ内のクラスから
ResourceBundle#getResource() で参照されているのですが普通にリンクしても
当然このオブジェクトはアプリケーションにリンクされません.
なにかうまい方法はないでしょうか?
500デフォルトの名無しさん:2007/10/05(金) 14:04:56
500get!
501デフォルトの名無しさん:2007/10/16(火) 16:26:56
>>498
ネイティブ呼び出してるの以外はSunのそのまま使えばいけそうなもんだけど
そういうわけにはいかないのかね
502デフォルトの名無しさん:2007/10/16(火) 18:05:27
今後標準クラスライブラリはどうするのかねー?
GNU classpath を継続して使い続けるのかな?
503デフォルトの名無しさん:2007/10/17(水) 08:55:35
差し換えられるようにする方向じゃないのかなあ。
504デフォルトの名無しさん:2007/10/17(水) 18:41:18
ま、とにかくGNUの精神なんて末端には関係ないんで6が動くの早く出してくださいよ
505デフォルトの名無しさん:2007/10/18(木) 13:42:08
フロントエンドのecj化でコンパイラだけなら動くようになるんじゃね?
506デフォルトの名無しさん:2007/11/03(土) 00:07:44
CGJを使ってみようと思って対応状況を見てみたんだけど、
awtやらswingのコードは全てをカバーしておらずまだ実用には向かないと書いてある。

これ、どういうこと?

SunのJDKの中にはawtやらswingやらのclass全てのファイルが入っているのに、
それを使わず、すべて自分たちで一から書き直しているということ??

もしそうなんだとしたら、開発者には悪いけどこんなアホなことは無いなあ。
既存のコードを有効利用しない(できない?)で車輪の再発明を延々と繰り返すって
一体全体どうなの。


なんだか非常に的外れな事を言っている気がどんどんしてきた。
間違っていたら教えてください。
507デフォルトの名無しさん:2007/11/03(土) 00:14:41
非常に的外れだが間違っているとは言えないね。w
大人の事情というものがあるのだよ。
508デフォルトの名無しさん:2007/11/03(土) 00:56:27
>>506
少なくとも今迄はできなかった
SunのJDKがGPLになった(まだ全部じゃなけど)からこれからは有効利用できるはず
でも実際にSunのJDKを利用するかどうかは作ってるやつらに聞いてくれ
509デフォルトの名無しさん:2007/11/03(土) 01:03:22
libgcjってGPL例外条項があるけど、サンのライセンスと適合するん?
510デフォルトの名無しさん:2007/11/03(土) 01:42:06
ふむふむ、分かったぞ。
どうやら二つの問題をあわせ持っているみたいだ。

一つは標準APIの問題。
Sunはそれの流用を禁止していたので、新しいJava実装の開発は標準ライブラリが使えない為難しかった。
そこで登場したのがGNU Classpathって団体で、彼らはSunJDKのAPI仕様書を見ながらせっせとフリーな実装を作った。
この頃Sunにはソースコードをオープンにしようとする動きがあり、この問題は解決の方向へ向かっている。

これ、面白いなあw
GNU Classpathにとってこれは喜ばしいことなんだろうけど、今までの苦労が水の泡じゃないかw
んーでもまあSunが公開に踏み出したのには彼らの影響もあるのかな。

んでもう一つの問題がネイティブコードに変換する時の問題。
Javaをプレステの実機とおけば、GCJはPCで動くエミュレータみたいなもので
swingで使われているコードにはまだ再現できない所もあるいうことみたいだ。


なんだか日記みたいになってしまったけど、すっきりしました。
みなさんレスありがとうございました。
511デフォルトの名無しさん:2007/11/03(土) 08:24:21
gcj + Sun class libraryってprojectもあるよ。
けどgcjの中の人たちは、classpathがかなり仕上がってきているから、
そっちの方に重きを置いている人が多い。
二年前にSunがソース公開していたら、状況は違ったと思うけれど。
いずれにせよ、ちゃんとした成果がないことを嘆くのはまだ早い。
512デフォルトの名無しさん:2007/12/16(日) 06:49:52
gcj試してみたけどちょっとしたプログラムでも動作が怪しい。
同じプログラムをExcelsior JETで変換するとすんなり動いた。
やはり商用には敵わないか・・・
JETの購入真剣に検討してみるかな。
513デフォルトの名無しさん:2007/12/16(日) 15:39:22
↑工作員っぽくてかっこいい
514デフォルトの名無しさん:2007/12/16(日) 15:43:17
少なくとも Eclipse という gcj でコンパイルでき、
動作もする大きなパッケージがある訳で。
515デフォルトの名無しさん:2007/12/17(月) 15:30:29
Excelsior を使いたい状況って何なんだろう・・・
最近じゃ無くなってきてないですかね?
JREの導入も簡単になってきてるし・・・・
それでもいやなときは、gcjというフリーな解があるのであって・・・
仕事でやるときは、JRE入れるのが安全だもんなぁ
516デフォルトの名無しさん:2007/12/17(月) 22:44:28
gcj じゃ Excelsior の代りにはならんだろ…
Java5未対応だし,使えないAPIが山ほどあるし(Win32環境だと特に酷い).
gcj を使うなら最初からある程度 gcj をターゲットにして作っていくか,
使えないAPIを自分で実装しながら作っていくくらい気合入れてやらないと.
gcj用に作ってついでにJREでも動くってのは可だが逆はかなり手間かかると思うぞ…
517デフォルトの名無しさん:2007/12/18(火) 13:29:52
ん、いや、仕事で使う時なんだけど
まずはJREを使うという選択肢を検討する。
次に、gcj 、Excelsiorという選択肢があるんだが
昔に比べ、JRE導入で片付く件が多くなってるんじゃないということ。
gcjもExcelsiorも、どっちも仕事で使うにはJRE使用よりも活用度は落ちると思っただけ。

趣味で使うなら、もともと有料のアプリを使う動機に欠けるわけで。
技術的興味からgcjを利用するというのはわかるけど・・・・
518デフォルトの名無しさん:2007/12/19(水) 01:16:01
つ チラシの裏
519デフォルトの名無しさん:2007/12/19(水) 17:21:29
gcjでSocketを使ったプログラムを変換すると
プログラムがフリーズしてしまうのですが
どなたか解決策をご存知の方いないでしょうか?

プログラム自体は下記のサイトのサーバー側と同じ物です。
ttp://www.hellohiro.com/socket.htm
520デフォルトの名無しさん:2007/12/19(水) 17:28:44
↑変換後のプログラムでSocket通信を行うとフリーズしてしまうということです。
521デフォルトの名無しさん:2007/12/20(木) 11:34:17
>>519
非常に申し分けないがこのスレにエスパーはいないようなんだ…
OS や gcj のバージョンくらい書いてみたらどうかね?
522519:2007/12/21(金) 17:47:51
>>521
申し訳ありません。おっしゃる通りで・・・

OS WindowsXP Professional Version2002 ServicePack2
gcj MinGW/GCC/GCJ 4.3 (gcj-eclipse-merge-branch)

変換はeclipseからAntを使って変換しました。
最終的にはJava5でコンパイルしたプログラムを変換したかったので
gcjの他のバージョンは試していません。
523デフォルトの名無しさん:2007/12/22(土) 12:10:15
>>522
昔試した限りでは win32 環境で libgcj の Socket は使っただけで例外はいた。
試したのは MinGW の GCC 3.4.2 だったと思う。現状では win32 環境の libgcj は
完成度が低すぎて使い物にならないってのがそのときの結論だった。
ちょい上にも書 Sun の Java 用に書いたものを gcj にポートするのは厳しいと思えっていてあるでしょ?

# Linux だとわりと動くんだけどねぇ…
524519:2007/12/23(日) 22:35:55
あれから何度か試してみましたが、
例外もはいていないようなので原因はまったくわかりませんでした。
やはりまだwindows上では厳しいままのようですね。。

簡易のHttpServerをJavaをインストールしないで動くように出来ないかと言われて
gcjに辿りついたのですが、諦めて素直にJavaをインストールしてもらいます。

しかし、こういう技術があるのをまったく知らなかったので
今回は良い勉強になりました。ありがとうございました。
525デフォルトの名無しさん:2007/12/23(日) 23:31:52
>>524
デバッガで止めたらどこで止まってるの?
後スタックトレースとかもあるとうれしいが。
526デフォルトの名無しさん:2007/12/24(月) 00:39:23
簡易HTTPサーバくらいなら動かせそうな気もするけどねぇ…
527デフォルトの名無しさん:2008/03/12(水) 18:12:54
GCC 4.3.0 から Java 1.5 の言語仕様を満たすようになってるらすいな。
528デフォルトの名無しさん:2008/03/12(水) 18:26:36
フロントエンドのリプレース終わったのか?
529デフォルトの名無しさん:2008/03/12(水) 18:36:57
あけましておめでとうございます
530デフォルトの名無しさん:2008/03/18(火) 01:53:29
今更で恐縮ですが、
hsqldb.jar はgcjでコンパイルでき
付属の簡易Servletも機能する

あけましておめでとうございます。
531デフォルトの名無しさん:2008/08/08(金) 18:42:00
誰もいない予感
532デフォルトの名無しさん:2008/08/08(金) 19:13:34
夏休みでも静かだな…
533デフォルトの名無しさん:2008/08/14(木) 18:54:47
過疎ってるから話題を振ってみる
Sunがこういうネイティブコンパイラ作る計画ってのはないの?
今の財産生かせばそんな難しい事じゃないと思うし結構需要あると思うんだけどな
534デフォルトの名無しさん:2008/08/15(金) 17:11:02
どこ向けに出すのさ
535デフォルトの名無しさん:2008/08/16(土) 22:46:20
GCJ使ってる層じゃね
536デフォルトの名無しさん:2008/08/18(月) 11:57:20
>>535
つまり需要はないってことか…
537デフォルトの名無しさん:2008/08/18(月) 12:45:07
CNIみたいなのをサポートしてくれないなら不要。
538デフォルトの名無しさん:2008/08/18(月) 14:44:46
>>533
思想的に Sun がネイティブコンパイラ出すことがそもそもありえんだろ・・・
539デフォルトの名無しさん:2008/08/18(月) 17:33:08
JITのコンパイル結果をキャッシュしてくれてもいいとは思うんだよな。
クラスファイルが更新されてないかとか整合性を調べてOKなら再利用。
540デフォルトの名無しさん:2008/09/05(金) 12:06:10
gnu.gcj.jit.cachedir
541デフォルトの名無しさん:2008/10/04(土) 20:04:02
しかしネイティブコンパイルしてもそんなに速度あがんねーんだな。
Java実行環境も進歩したもんだ。
542デフォルトの名無しさん:2008/10/05(日) 21:20:51
つうか動的な要素の多い言語だと必ずしも静的コンパイルしたほうが
早くなるわけじゃ…。実行時情報を使えないし。

C++・Fortran・OCamlあたりをネイティブコンパイルすると速度でるのは
あらかじめそういうこと想定した文法やライブラリだから。
543デフォルトの名無しさん:2008/10/05(日) 21:54:07
gcjのコンパイルって全部静的に解決してるのか?
544デフォルトの名無しさん:2008/10/05(日) 22:22:07
実行時に外部からクラスファイルを読み込んだときのためにインタプリタも内蔵してるとか聞いた覚えがある
545デフォルトの名無しさん:2008/10/07(火) 13:03:14
すごく…おおきいです
546デフォルトの名無しさん:2008/10/10(金) 20:30:39
gcjを使えば、javaでcgiが作れそうなのだが、
GETやPOSTのデータを受け取る方法がわからない。
下のHello.java をgcjでコンパイルして、http://yoursite/Hello.cgi?a=1
とかしたいのだが、nullしか受け取れん。どうすればいいだろうか?

public class Hello{
public static void main(String[] args){
String output = "";
output += "Content-type: text/html;charset=utf-8\n";
output += "\n";
output += "<HTML><BODY>hello" + System.getProperty("QUERY_STRING") + "</BODY></HTML>";


System.out.println(output);
}
}
547デフォルトの名無しさん:2008/10/10(金) 20:42:48
Java2Dとかawt.Robotとかは使えるの?
548デフォルトの名無しさん:2008/10/10(金) 20:46:46
>>546
QUERY_STRINGはSystem.getenvで取れると思う。ただしJava5以上ね。
POSTはstdinに放り込まれるんじゃなかったかな。
549デフォルトの名無しさん:2008/10/11(土) 22:57:03
>>548
さんくす。動いた。
が、gcjが思ったより遅かったので失望した・・
550デフォルトの名無しさん:2008/10/11(土) 23:56:34
なに?こんなのあるの?

俺様のLinuxに入れたサーブレットもこれでコンパイルしてみよう。
551デフォルトの名無しさん:2008/10/12(日) 00:32:10
HotSpotコンパイラと同じ性能を期待したらアカンよ。
バッチ処理で使いたいならC++ with Boostでも使った方がいい。

あとJavaサーバーはJavaサーバーのまま使うのが一番速い。
SPECweb2005っていう動的Webコンテンツのベンチマークがあるんだけど、
そこはJSPの独壇場でPHPじゃ歯が立たない状態になってる。
552デフォルトの名無しさん:2008/10/12(日) 12:08:14
phpてw
そこまで話のレベル落とされても…
553デフォルトの名無しさん:2008/10/12(日) 13:04:37
gcjならjre使うより速いって思い込んでる住人のレベルの低さのが気になる
554デフォルトの名無しさん:2008/10/12(日) 13:30:13
JITコンパイル時間が短縮される
実行時の性能は今時のサーバーVMのが上
つまりサーバアプリに使っても何の意味も無い

ってことで合ってる?
555デフォルトの名無しさん:2008/10/12(日) 13:42:42
思い込んでねえって。10ぐらい前のレスでも話でてる。
556デフォルトの名無しさん:2008/10/12(日) 14:05:02
言語毎のコンパイラ性能の比較サイトがあるから参考になるよ
ttp://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=gcj
557デフォルトの名無しさん:2008/10/12(日) 14:13:35
>>554
サーバアプリみたいに、
起動しっぱなしで、
同じコードを何度も何度も実行する応用の場合、
JITの性能がメインファクター。
558デフォルトの名無しさん:2008/10/12(日) 22:36:50
gcjはarmネイティブコンパイル用に使うんです><
559デフォルトの名無しさん:2008/10/12(日) 23:21:33
armって、libgcjもてるような環境そんなに多いか?
560デフォルトの名無しさん
ちょw