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

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

350:デフォルトの名無しさん
05/10/03 19:15:29
出ない?シンボル消したとかじゃなくて出ない?

351:デフォルトの名無しさん
05/10/03 20:42:15
>>350

No stack trace availableと表示されて、本物が出ないです。。
gcj で使ったオプションは -fjni -O3 です、、、
どうやればよいのやら。

352:デフォルトの名無しさん
05/10/03 20:46:19
javacのほうはgenerate debugging symbolsを有効にしてあります。

353:デフォルトの名無しさん
05/10/03 21:08:08
URLリンク(gcc.gnu.org)

354:デフォルトの名無しさん
05/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:デフォルトの名無しさん
05/10/03 23:43:35
javacがでてくるのが不思議なんだが、もしかしてjavacでいちいちクラスファイル
を生成させてからgcjでAOTコンパイルさせているのかな?

356:デフォルトの名無しさん
05/10/03 23:49:51
こちらXcodeというIDEを使っていましてjavacが使われています。
通常はjarファイルにパッケージして使っています。
そのjarファイルをgcjでコンパイルできるようになればいいのですが、

357:デフォルトの名無しさん
05/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:デフォルトの名無しさん
05/10/04 20:15:08
>>357
ありがとうございます。
一応、普通のjavaで起動して動作確認してみたところスタックトレースは表示されます。
なのでjarファイルの中のシンボルは消されていないようです。
問題なのはgcj で書き出しだ.oバイナリです。
コンパイル時に何らかのオプションをつけてシンボルを消さないようにする必要があるのでしょうか?

念のため windows の mingw の gcj 3.4.4 でもコンパイルしてみましたが症状は変わらずじまいです。

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

慌 て る 乞 食 は 貰 い が 少 な い

360:デフォルトの名無しさん
05/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:デフォルトの名無しさん
05/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:デフォルトの名無しさん
05/10/04 21:43:04
Darwin(Mac OS X)は、バイナリ実行形式がELFじゃなくて、Mach-Oだからなあ。
まだgcjのportingが十分じゃないんでしょ。
Mach-Oのせいでいろいろポーティングが遅れるんだなあ…
ELFにすべきだったと思うよ。

363:デフォルトの名無しさん
05/10/04 21:44:19
それは言える。

364:デフォルトの名無しさん
05/10/07 21:24:41
MinGwのサイトにlibiconvのPORT版のファイルがありますよね。
それをコンパイルしてインストールしたいのですが
手順が解説されているサイトなどご存知ありませんか。
gcjを使おうとするとiconvが必要といわれます。

365:デフォルトの名無しさん
05/10/08 01:48:06
スレ違いだけど、

Max OS XをELFにしてたら、ファットバイナリの仕組が作り直しだから、
PowerPCからIntelへの乗り換えのハードルが高くなったず。

366:デフォルトの名無しさん
05/10/08 01:57:21
>>365
アプリケーションバンドルの実体ってフォルダだから、その気になれば
なんとでもなる気はするけどね。

367:デフォルトの名無しさん
05/10/08 02:19:41
>>364
mingw-port はどれも微妙…というかまず ports 使うためにちょっとだけ準備がいるので
iconv だけなら普通にソース取ってきて./configure && make install した方が楽っぽい.

面倒なら
URLリンク(cefiro.homelinux.org)
とかからバイナリ拾って展開しれ

368:デフォルトの名無しさん
05/10/08 03:04:51
>>366
URLリンク(developer.apple.com)
のListing 1 A bundle with executable code

369:デフォルトの名無しさん
05/10/08 05:23:30
なんじゃこれ

370:364
05/10/08 09:19:17
>>367
親切な方、どうもありがとうございます。
コンパイル済みのバイナリでやってみます。

371:364
05/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:デフォルトの名無しさん
05/10/08 11:35:44
リンカがちゃんと見つけられるようにしてる?

373:364
05/10/08 12:49:52
>>372

リンカのことがよくわからなかったのですが、パスが通っていないのかなと思い、
c:¥mingw¥usr¥localフォルダの中身をみていましたら
階層構造がc:¥mingw とそっくりなことに気づき、
そのまま local フォルダの中身をc:¥mingwに上書きコピーしたところちゃんと認識できるようになりました。
強引な気もします。

374:364
05/10/12 22:56:08
mingw版のgcjのバージョン4.0~をコンパイル済みで配布しているサイトをご存知の方いませんか?

375:364
05/10/12 23:00:26
事故レスです。とおもったらここで見つかりました。
URLリンク(www.thisiscool.com)

376:デフォルトの名無しさん
05/11/08 05:24:50
javacc.jar 878,719 byte
gcj -s -O2
upx
javacc.exe 878,080 byte

やるーーー

377:デフォルトの名無しさん
05/12/06 04:51:26
保守

378:デフォルトの名無しさん
05/12/21 02:01:52
URLリンク(www.cmagazine.jp)
オープンソース
ネイティブコードを作成するフリーのJava開発環境に注目!!
GCJを使ってみよう
javaの速さに驚いた。

379:デフォルトの名無しさん
05/12/25 23:53:06
>>378
インスタンシング(笑)

380:デフォルトの名無しさん
06/01/04 13:36:01
>>378
なんかいまいちわかんなかったよ
dbtoolとか共有ライブラリの扱いかたとか

381:デフォルトの名無しさん
06/01/04 18:37:12
URLリンク(www.tosu.org)から
ソースを持ってきて、
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:デフォルトの名無しさん
06/01/04 18:47:03
>>381
おまえ、CPUの種類指定したか?

383:デフォルトの名無しさん
06/01/04 21:23:11
>>382
指定しなければ、今、稼働してるマシン用のものが指定されてることにならないんでしょうか?

ちなみに、クルーソーの700MHz使ってます。

384:デフォルトの名無しさん
06/01/05 22:35:54
>>383
マシンのBIOSとか最新か?

385:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/01/12 08:54:33
strictfp 使った上に、 StrictMath.log() 使っても改善されない?

あと、4になるのは log(10000) じゃないか?

387:デフォルトの名無しさん
06/01/12 09:02:37
2が底だからt=4になるのはx=16だろ。

388:デフォルトの名無しさん
06/01/12 09:08:01
実は10000は二進法で表現されてたんだよ。

無理っぽいか。 3.99999999 とか十進法使ってるし。

389:デフォルトの名無しさん
06/01/12 12:53:03
>>385
浮動小数点演算の基礎がわかってない

390:デフォルトの名無しさん
06/01/12 15:03:42
SunのJava作った奴等もIEEE 754分かってないよなあ
何故数値計算の専門家を入れとかなかったのかと…

391:デフォルトの名無しさん
06/01/12 22:23:40
>>390
おまえがわかってない。

言語仕様 4.2.4 Floating-Point Operations
URLリンク(java.sun.com)

java.lang.Math
URLリンク(java.sun.com)

java.lang.StrictMath
URLリンク(java.sun.com)

ここに出てくるulpが何を表すわかるか?

392:デフォルトの名無しさん
06/01/12 23:27:14
うんこ

393:デフォルトの名無しさん
06/01/15 04:16:48
URLリンク(page.freett.com)
上記ページを参考に、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:デフォルトの名無しさん
06/01/15 21:48:47
これか?
URLリンク(gcc.gnu.org)

395:デフォルトの名無しさん
06/01/15 22:34:44
最近、
gcj --main=Hello --classpath=/usr/share/java/libgcj-4.0.2.jar Hello.java
ってクラスパス明示的に指定する必要があるのね。

396:デフォルトの名無しさん
06/01/16 00:05:36
>>394
それです。ありがとうございます。

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

ちなみに、どなたかSWT3.1で、SWT.jar → SWT.o の変換を成功された方っていますか?

397:デフォルトの名無しさん
06/01/16 00:20:51
gcj-4.0.2 on Linuxなら全く問題なし。

398:デフォルトの名無しさん
06/01/16 00:21:20
>>396
ソースコンパイルしろって書いてあるように見えるけど。

399:デフォルトの名無しさん
06/01/16 00:39:01
>>393
同じくWindows環境でハマった。
SWT2.1.3ならビルドできたけどそれじゃダメかい?

URLリンク(archive.eclipse.org)

400:デフォルトの名無しさん
06/01/16 01:20:25
>>393

MinGW で SWT が使いたいって話なら
URLリンク(hoeppie.gmxhome.de)
じゃダメか?

401:393
06/01/17 01:18:19
情報ありがとうございます。助かりました。

とりあえず、SWT2.1.3で動作しました。>>399様、ありがとうございます。
今日はあまり時間が取れなかったので、ソースコンパイルと、>>400様の方法も
明日以降、やってみようと思います。

402:デフォルトの名無しさん
06/02/12 01:01:59
このスレの人って、GNU原理主義者?ただの物好き?
URLリンク(www.shudo.net)
わざわざ使う理由が見つからない。

403:デフォルトの名無しさん
06/02/12 01:14:26
>>402
じゃ使うな。さようなら。

404:デフォルトの名無しさん
06/02/12 01:45:41
普通に訊いてるのにそんな意地悪な答えするなよ

405:デフォルトの名無しさん
06/02/12 01:56:03
????普通に訊いてる????

406:デフォルトの名無しさん
06/02/12 04:43:54
>>404
言語障害わずらってるといろいろ大変だね。
頑張れ。

407:デフォルトの名無しさん
06/02/12 05:36:35
>>402はこのスレ住人には触れられてはならない事のようだな。

408:デフォルトの名無しさん
06/02/12 19:39:49
はいはい

409:デフォルトの名無しさん
06/02/19 00:56:42
CygwinでCGJを使ってみたんですが、
ただのHello Worldプログラムが4MBにもなってしまいます。
なんとかなりませんか?

410:デフォルトの名無しさん
06/02/19 01:05:26
strip した?


411:デフォルトの名無しさん
06/02/19 01:55:39
ただのHello WorldくらいCで書け。

412:デフォルトの名無しさん
06/02/19 15:18:48
なんて事を言うんだお前は

413:デフォルトの名無しさん
06/02/19 16:08:09
ただのHelloWorldくらいならアセンブラの方が早いと思う

414:デフォルトの名無しさん
06/02/19 17:31:42
つっこみどころが違う。なぜ Hello World を書くのか考えろ。
いちいち書く気もしないからスルーしてたのに・・・。

415:デフォルトの名無しさん
06/02/19 17:45:25
>>414
> なぜ Hello World を書くのか考えろ。

挨拶のためじゃないのか?

416:デフォルトの名無しさん
06/02/19 17:46:48
Beagleってディスクトップ検索のツールは、Luceneって検索エンジン使っている。
これは元々Javaで書かれていたけれど、
Beagleの使っているのは、C#にポートしたdotLucene。だからmonoが必要。
これってどうよ? > gcj

417:デフォルトの名無しさん
06/02/19 18:04:57
gcjの例外機構ってc++とはなんか違うよね?
どやって実装してんのか知ってる?

418:デフォルトの名無しさん
06/02/19 23:10:30
一緒だよ。
セマンティクスがほんの少し違うだけ。特に静的なセマンティクス。

419:デフォルトの名無しさん
06/03/11 12:20:06
>>402
gcj以外に
JavaをEXEにできる
タダの変換プログラムが
あれば乗り換えたいです。

性能はあまり問いません
日本語処理がまともならば。

420:デフォルトの名無しさん
06/03/11 12:46:57
日本語処理まともじゃん

421:デフォルトの名無しさん
06/03/11 12:54:28
「日本語処理がまとも」の定義がないとなんとも。

422:デフォルトの名無しさん
06/03/11 23:07:19
cygwin の gcj はダメポだがそれ以外の環境ではまともだと思うけどなぁ…

423:デフォルトの名無しさん
06/03/12 02:00:20
問題点の指摘がない→まとも
って進行でいいんじゃない?

424:デフォルトの名無しさん
06/04/15 00:37:36
失礼します、初心者です。
Cygwin入れてSWTやろうとしましたが、
エラーを見るとどうもSWT.jarを読めていないようで…
SWT.jarの置き場所が間違ってるような気がします。どこに置いたらいいんでしょうか?

425:デフォルトの名無しさん
06/04/15 04:18:07
--classpath=パス名で指定しろよ。

426:デフォルトの名無しさん
06/04/15 17:37:36
>>425
classpath指定すると
undefined reference to hoge…
というのが大量に出るようになりますた。

427:デフォルトの名無しさん
06/04/16 01:39:34
必要なところは全部指定しろよ。

428:424
06/04/19 21:22:43
よくわからないので、mingwにして、やろうとしてます。
URLリンク(page.freett.com)
を参考にして、とりあえず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:デフォルトの名無しさん
06/04/19 21:34:04
>>428
URLリンク(hoeppie.gmxhome.de) うちではここ見てMinGWでビルドした

430:デフォルトの名無しさん
06/04/19 22:26:59
えっと、mingwで単なるHelloWorldを表示するプログラムからやり直していますが、
cannot find -liconv
というエラーが出るようになりました

>>429
さらにわからなくなりますた


431:デフォルトの名無しさん
06/04/19 23:54:18
>>430
MinGW の gcj でコンパイルしてできたファイルは libiconv に依存する.
gcj 使う前にまず iconv をビルドしてインストールするかコンパイル済みの
バイナリを拾ってきてインストールしれ.その後 HelloWorld.

432:424
06/04/20 20:40:54
とりあえず、現状を。

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

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

どーしよーもなくなってます・・・。

433:デフォルトの名無しさん
06/04/22 17:12:07
gcj の GC 部分って Boehm GC 使ってるのかな?

434:デフォルトの名無しさん
06/04/22 17:18:13
うんそうだよ

435:デフォルトの名無しさん
06/04/23 01:33:15
運送ですか…

436:デフォルトの名無しさん
06/04/23 02:15:32
>>434
ありがとう。

437:デフォルトの名無しさん
06/05/02 01:03:23
だれかお暇なら gcj で例えばどういうコードがコンパイルできないのか教えてください。
将来的にもあらゆる java コードに対応するのは原理的に無理そうってことでいんでしたっけ?

438:デフォルトの名無しさん
06/05/02 03:11:48
URLリンク(gcc.gnu.org)
URLリンク(www.kaffe.org)

将来に渡って原理的にサポート不可能なものはない。

439:デフォルトの名無しさん
06/05/02 03:22:15
>>438
JAVAが進化する限りにおいて、gcjは、完全にJAVAに追い付くことはできない。

440:デフォルトの名無しさん
06/05/02 11:18:25
原理主義者は大変だな。w

441:デフォルトの名無しさん
06/05/02 13:01:03
>>439
プロの方ですか?私も同じ意見です。

442:デフォルトの名無しさん
06/05/23 21:54:59
>>439
完全に追いつく必要もないと思うが。


443:デフォルトの名無しさん
06/05/23 22:05:05
実際のところ言語仕様やVM仕様には追い付けるだろうけれど,
無駄に増え続けるクラスライブラリに完全に追い付くことはないだろうな…

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

# ぶっちゃけいらないパッケージばっかりなんだよな…

444:デフォルトの名無しさん
06/06/06 14:54:24
SunはほとんどOpenSourceにするみたいだから、
コンパイルすればいいだけじゃない?

445:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/06/09 00:01:15
最近はエラーメッセージが読めない奴でもコンパイルするのか

447:デフォルトの名無しさん
06/06/09 00:25:22
>>446
いや、gcjh のビルドすんでないのに使おうとしてエラー出るんだよ。

448:33
06/06/16 14:56:50
gcjでマニフェストファイルを含んだjarファイルをネイティブコードにするには、どのようにしたらいいのでしょうか?

449:デフォルトの名無しさん
06/06/19 13:20:47
C:\> unzip そのjar
C:\> cat マニフェスト
C:\> gcj --main=メイン *.java

450:デフォルトの名無しさん
06/06/19 18:47:12
>>448
ありがとです。

451:448
06/06/19 18:49:08
>>449の間違いでした(汗

452:デフォルトの名無しさん
06/07/03 08:20:41
gcjって何ですか?

453:デフォルトの名無しさん
06/07/03 08:32:37
GNU Compiler for Java の略だっけ?

454:デフォルトの名無しさん
06/07/24 09:56:06
当方Windows2000を使用しております。
NetBeansからgcjを使うにはどうすればいいでしょうか?
一応MinGWでコマンドラインからgcjを利用できるようにはしてあります。

455:デフォルトの名無しさん
06/07/24 12:58:46
>>454
ほれ
URLリンク(homepage1.nifty.com)

456:デフォルトの名無しさん
06/07/24 14:16:37
>>455
謝謝。助かりました。

457:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/08/01 19:46:38
>>457
コマンドライン晒せ

459:デフォルトの名無しさん
06/08/01 20:35:12
とりあえず読め
URLリンク(fun.sci.fukuoka-u.ac.jp)

460:デフォルトの名無しさん
06/08/02 14:11:15 BE:805018188-2BP(10)
>>458
>>459
ありがとう。そうか、main指定が必要だったのか・・・

われながらこんな簡単なところでコケるとは情けない・・・・

461:デフォルトの名無しさん
06/08/04 21:38:16
>>460
そんなあなたに

JavaCompiler
URLリンク(javacompiler.mtsystems.ch)

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

Windows 使いなら是非試してほしい。

462:デフォルトの名無しさん
06/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:デフォルトの名無しさん
06/08/14 22:56:54
>>462
出来ません


464:デフォルトの名無しさん
06/10/05 22:38:39
>>461
いいねぇ。なかなか使えるよ。UPXでアホみたいに小さくなるし。

GCJでJNIだけど、VisualStudioで作ったDLLは駄目?jvm.dll使わないようにすれば動くかなぁ?
今のところ、jvm.dllを要求されてしまったので、うまくロードできてません。
Direct3DやDirectShowを使ってしまったので、GCCでコンパイルするの面倒かと思って。

465:デフォルトの名無しさん
06/10/07 12:30:51
UPXで小さくしたところで、メモリ上に展開される量はかわらんだろ。

466:デフォルトの名無しさん
06/10/10 16:14:29
>>444
世代別GCだけでもGPLと矛盾しないライセンスで出してくれー>Sun
#今はBoehm GCがgcjの足ひっぱってる気がしてならない

467:デフォルトの名無しさん
06/10/10 23:30:36
>>466
完全にストップ&ゴーするしねぇ…
しかし足を引っ張ってるものは他にもいっぱいありそうだしなぁ…
いっそクラスライブラリも全部 Sun 製のやつに(ry

468:デフォルトの名無しさん
06/10/24 17:09:09
javaCompiler-0.8 で自作 swt アプリをコンパイルして実行しようとしています。
無事コンパイルでき実行すると、
class.forName() を使っているためか、NoClassDefFoundError になります。

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

URLリンク(www.shudo.net)
 プログラム実行中に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:デフォルトの名無しさん
06/10/24 20:13:08
org.xml.sax パッケージがリンクされてないみたいです。
リンクするにはどうすればいいのかな?

gcj でコマンドラインでやりはじめています。

470:デフォルトの名無しさん
06/10/24 20:15:58
新しい・・・

471:デフォルトの名無しさん
06/12/15 17:21:08
>>466
URLリンク(openjdk.dev.java.net)

472:デフォルトの名無しさん
06/12/15 22:25:23
gcj の開発者な人達は今後どう動くのかねぇ?

473:デフォルトの名無しさん
06/12/16 17:53:56
ネイティブコンパイラに

474:デフォルトの名無しさん
07/01/07 20:55:29
thisiscoolのgcjで簡単なswtアプリを作ると
バイナリサイズが17MB
実行時にメモリを32MB使用する

こんなもんか?


475:デフォルトの名無しさん
07/01/07 22:03:50
-Os -Wl,--strip-all
で縮まんならあきらめるしかないね

476:デフォルトの名無しさん
07/01/07 23:50:31
>>475
サンクスコ
縮まらなかった。
常駐するようなアプリは無理だなこりゃ。


477:デフォルトの名無しさん
07/01/11 12:31:22
4Gのメモリにとってどれくらいの割合か考えてみよう

478:デフォルトの名無しさん
07/01/11 13:04:29
君は実に馬鹿だな

479:デフォルトの名無しさん
07/01/11 13:09:35
馬鹿は実に君だな

480:デフォルトの名無しさん
07/01/11 13:14:21
はいはい

481:デフォルトの名無しさん
07/01/11 13:25:18
全部が「常駐」するわけじゃないし、JREインストールしてもそのくらいストレージは食うし、
実用上はあまり問題ない。問題となるのは「常駐するようなアプリ」ではなく、同じような
アプリが複数起動されたときの無駄だと思う。

482:デフォルトの名無しさん
07/01/11 14:16:36
上の Java Compiler に入ってる strip.exe で20Mが4Mくらいになるよな。8Mくらいだっけ?

483:デフォルトの名無しさん
07/01/11 14:51:14
>>482
--strip-all 付きで生成したバイナリも小さくなるっけ?

484:デフォルトの名無しさん
07/01/11 16:40:34
最適化しようとするとリフレクション&クラスローダー関連が癌だよな

動的プログラミングを静的なバイナリに置き換える事自体が問題なんだろうけど。

485:デフォルトの名無しさん
07/01/11 18:54:32
でもたいていそんな変わったコードはコンパイル不可だから。
っていうか、ちょっと複雑なライブラリーつかうと不可。

486:デフォルトの名無しさん
07/01/19 18:38:02
要するにgcj使うメリットって何もないよね

487:デフォルトの名無しさん
07/01/20 01:56:11
>>486
ないと思うならない。

488:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/01/21 00:17:30
これMakefile作れないの?

490:デフォルトの名無しさん
07/03/21 13:19:10
cygwinのgcjで作った.exeの巨大さを見て愕然とする。linuxだとそうでもないのに。

思うに、ライブラリをスタティックリンクしているんだろうか?
ダイナミックリンクにする方法は?

491:デフォルトの名無しさん
07/03/21 14:10:19
>>490
そ、そうかな?
linux でのバイナリサイズも大きくてびっくりしたよ。

492:デフォルトの名無しさん
07/03/21 14:14:50
CygwinかLinuxかという問題ではなく、単にバージョンの問題だったりして。
Linuxも以前は大きかった記憶がある。

493:デフォルトの名無しさん
07/03/21 14:20:30
>>490
cygwin mingw だと libgcj のDLLが用意されてなくてかならずスタティックリンクされる。
リフレクションによるDLLからの動的クラスロードとかもできないしwin32環境のgcjはまだまだ。

494:デフォルトの名無しさん
07/04/18 12:11:27
GCJに入ってるJavaのライブラリと、対応するJavaのバージョンってどこで調べられますか?

495:デフォルトの名無しさん
07/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);
}
}

496:495
07/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:デフォルトの名無しさん
07/06/25 20:28:45
>>461
ありがとう!!!

498:デフォルトの名無しさん
07/06/25 21:10:09
>>494
対応するバージョンはよく分からないけど、最新版のGCJでどのクラスが
実装済みなのかは次のページで分かる。

URLリンク(developer.classpath.org)

ここのページに記載されていないクラスは未実装。

499:デフォルトの名無しさん
07/09/26 11:56:27
mingw の gcj 使っているのですが,gcjでコンパイルされた静的ライブラリをリンクする時に
静的ライブラリ内の特定のオブジェクトファイルを強制的にリンクする方法ってないでしょうか?
静的ライブラリ内にあるメッセージリソースをコンパイルしたものがライブラリ内のクラスから
ResourceBundle#getResource() で参照されているのですが普通にリンクしても
当然このオブジェクトはアプリケーションにリンクされません.
なにかうまい方法はないでしょうか?

500:デフォルトの名無しさん
07/10/05 14:04:56
500get!

501:デフォルトの名無しさん
07/10/16 16:26:56
>>498
ネイティブ呼び出してるの以外はSunのそのまま使えばいけそうなもんだけど
そういうわけにはいかないのかね

502:デフォルトの名無しさん
07/10/16 18:05:27
今後標準クラスライブラリはどうするのかねー?
GNU classpath を継続して使い続けるのかな?

503:デフォルトの名無しさん
07/10/17 08:55:35
差し換えられるようにする方向じゃないのかなあ。

504:デフォルトの名無しさん
07/10/17 18:41:18
ま、とにかくGNUの精神なんて末端には関係ないんで6が動くの早く出してくださいよ

505:デフォルトの名無しさん
07/10/18 13:42:08
フロントエンドのecj化でコンパイラだけなら動くようになるんじゃね?

506:デフォルトの名無しさん
07/11/03 00:07:44
CGJを使ってみようと思って対応状況を見てみたんだけど、
awtやらswingのコードは全てをカバーしておらずまだ実用には向かないと書いてある。

これ、どういうこと?

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

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


なんだか非常に的外れな事を言っている気がどんどんしてきた。
間違っていたら教えてください。

507:デフォルトの名無しさん
07/11/03 00:14:41
非常に的外れだが間違っているとは言えないね。w
大人の事情というものがあるのだよ。

508:デフォルトの名無しさん
07/11/03 00:56:27
>>506
少なくとも今迄はできなかった
SunのJDKがGPLになった(まだ全部じゃなけど)からこれからは有効利用できるはず
でも実際にSunのJDKを利用するかどうかは作ってるやつらに聞いてくれ

509:デフォルトの名無しさん
07/11/03 01:03:22
libgcjってGPL例外条項があるけど、サンのライセンスと適合するん?

510:デフォルトの名無しさん
07/11/03 01:42:06
ふむふむ、分かったぞ。
どうやら二つの問題をあわせ持っているみたいだ。

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

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

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


なんだか日記みたいになってしまったけど、すっきりしました。
みなさんレスありがとうございました。

511:デフォルトの名無しさん
07/11/03 08:24:21
gcj + Sun class libraryってprojectもあるよ。
けどgcjの中の人たちは、classpathがかなり仕上がってきているから、
そっちの方に重きを置いている人が多い。
二年前にSunがソース公開していたら、状況は違ったと思うけれど。
いずれにせよ、ちゃんとした成果がないことを嘆くのはまだ早い。

512:デフォルトの名無しさん
07/12/16 06:49:52
gcj試してみたけどちょっとしたプログラムでも動作が怪しい。
同じプログラムをExcelsior JETで変換するとすんなり動いた。
やはり商用には敵わないか・・・
JETの購入真剣に検討してみるかな。

513:デフォルトの名無しさん
07/12/16 15:39:22
↑工作員っぽくてかっこいい

514:デフォルトの名無しさん
07/12/16 15:43:17
少なくとも Eclipse という gcj でコンパイルでき、
動作もする大きなパッケージがある訳で。

515:デフォルトの名無しさん
07/12/17 15:30:29
Excelsior を使いたい状況って何なんだろう・・・
最近じゃ無くなってきてないですかね?
JREの導入も簡単になってきてるし・・・・
それでもいやなときは、gcjというフリーな解があるのであって・・・
仕事でやるときは、JRE入れるのが安全だもんなぁ

516:デフォルトの名無しさん
07/12/17 22:44:28
gcj じゃ Excelsior の代りにはならんだろ…
Java5未対応だし,使えないAPIが山ほどあるし(Win32環境だと特に酷い).
gcj を使うなら最初からある程度 gcj をターゲットにして作っていくか,
使えないAPIを自分で実装しながら作っていくくらい気合入れてやらないと.
gcj用に作ってついでにJREでも動くってのは可だが逆はかなり手間かかると思うぞ…

517:デフォルトの名無しさん
07/12/18 13:29:52
ん、いや、仕事で使う時なんだけど
まずはJREを使うという選択肢を検討する。
次に、gcj 、Excelsiorという選択肢があるんだが
昔に比べ、JRE導入で片付く件が多くなってるんじゃないということ。
gcjもExcelsiorも、どっちも仕事で使うにはJRE使用よりも活用度は落ちると思っただけ。

趣味で使うなら、もともと有料のアプリを使う動機に欠けるわけで。
技術的興味からgcjを利用するというのはわかるけど・・・・

518:デフォルトの名無しさん
07/12/19 01:16:01
つ チラシの裏

519:デフォルトの名無しさん
07/12/19 17:21:29
gcjでSocketを使ったプログラムを変換すると
プログラムがフリーズしてしまうのですが
どなたか解決策をご存知の方いないでしょうか?

プログラム自体は下記のサイトのサーバー側と同じ物です。
URLリンク(www.hellohiro.com)

520:デフォルトの名無しさん
07/12/19 17:28:44
↑変換後のプログラムでSocket通信を行うとフリーズしてしまうということです。

521:デフォルトの名無しさん
07/12/20 11:34:17
>>519
非常に申し分けないがこのスレにエスパーはいないようなんだ…
OS や gcj のバージョンくらい書いてみたらどうかね?

522:519
07/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:デフォルトの名無しさん
07/12/22 12:10:15
>>522
昔試した限りでは win32 環境で libgcj の Socket は使っただけで例外はいた。
試したのは MinGW の GCC 3.4.2 だったと思う。現状では win32 環境の libgcj は
完成度が低すぎて使い物にならないってのがそのときの結論だった。
ちょい上にも書 Sun の Java 用に書いたものを gcj にポートするのは厳しいと思えっていてあるでしょ?

# Linux だとわりと動くんだけどねぇ…

524:519
07/12/23 22:35:55
あれから何度か試してみましたが、
例外もはいていないようなので原因はまったくわかりませんでした。
やはりまだwindows上では厳しいままのようですね。。

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

しかし、こういう技術があるのをまったく知らなかったので
今回は良い勉強になりました。ありがとうございました。


525:デフォルトの名無しさん
07/12/23 23:31:52
>>524
デバッガで止めたらどこで止まってるの?
後スタックトレースとかもあるとうれしいが。

526:デフォルトの名無しさん
07/12/24 00:39:23
簡易HTTPサーバくらいなら動かせそうな気もするけどねぇ…

527:デフォルトの名無しさん
08/03/12 18:12:54
GCC 4.3.0 から Java 1.5 の言語仕様を満たすようになってるらすいな。

528:デフォルトの名無しさん
08/03/12 18:26:36
フロントエンドのリプレース終わったのか?

529:デフォルトの名無しさん
08/03/12 18:36:57
あけましておめでとうございます


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