[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 08/29 13:30 / Filesize : 142 KB / Number-of Response : 530
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [03/03/03 02:56]
1なのにsageちゃうあたりがgcj


本家
gcc.gnu.org/java/


関連:
「GCCについて part2」
pc2.2ch.net/test/read.cgi/tech/1046179115/

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

276 名前:274 mailto:sage [2005/05/11(水) 23:52:33 ]
thx
今、Gnome使ってるからちょうどいいな。
調べてみます。

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

278 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 21:27:15 ]
>>268
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 名前:デフォルトの名無しさん mailto:sage [2005/05/12(木) 22:58:12 ]
>>278
例えば(広告条項のない)Apache License 2 ならば、その成果をGPLなソフトに取り込む
のは問題ないよね。そういう意味で互換性のあるライセンスでやる(やってほしい)ってこと
じゃない?

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

281 名前:デフォルトの名無しさん mailto:sage [2005/05/13(金) 01:24:17 ]
例外条項で調整するのかな。
www.gnu.org/software/classpath/license.html

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

283 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2005/05/15(日) 15:38:52 ]
-lエクリプス(swt?)が抜けてるのでは?
違ってっても文句は言わずに。

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

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

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

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

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


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

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

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

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

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

291 名前:デフォルトの名無しさん mailto:sage [2005/05/25(水) 22:27:45 ]
>大抵 libgcj は 入ってるはずだし…

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

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


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



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

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

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


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


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

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

300 名前:デフォルトの名無しさん mailto:sage [2005/06/02(木) 22:54:13 ]
5. バイナリエディタで作る

301 名前:デフォルトの名無しさん mailto:sage [2005/06/03(金) 00:37:51 ]
6. Linux側にクロス環境を構築する。

302 名前:デフォルトの名無しさん mailto:sage [2005/06/03(金) 01:34:52 ]
5は3、6は4と言ってる事たいして変わらんね

303 名前:デフォルトの名無しさん mailto:sage [2005/06/03(金) 01:35:17 ]
逆だった・・・



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

305 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2005/07/09(土) 02:34:31 ]
ネイティブ言語なら、動的/共有ライブラリにして外出しされる部分だろうな、サイズを増加させてるのは。

308 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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いかすね!バグみっけたら俺の園児レベルの英語でばんばんパッチ送っていくぜ

310 名前:1段ずれたのはご愛嬌 mailto:sage [2005/07/09(土) 23:41:04 ]
ant.exe+jikes.exeちょっぱやっすよちょっぱや

311 名前:デフォルトの名無しさん mailto:sage [2005/07/18(月) 07:51:53 ]
>76
の作り方教えて欲しい

312 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2005/08/28(日) 16:26:25 ]
>>314
new InputStreamReader(inputstream, "SJIS ");
new OutputStreamWriter(outputstream, "SJIS ");

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

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

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

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

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



317 名前:314 テストソース mailto:sage [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);
  }



318 名前:314 テストソースつづき mailto:sage [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();
  }


319 名前:314 テストソースつづき2 mailto:sage [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を読め

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

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

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

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



322 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2005/08/28(日) 20:18:21 ]
libgcj.aからSJIS周りの.oファイルを取り出して直接リンク。

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

326 名前:314 mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2005/08/28(日) 20:55:13 ]
それ動くか試してないから手直必須
あと org/javacc/parser/Version.oも入れる

331 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2005/08/28(日) 21:21:44 ]
page.freett.com/gikob/gcj/japanese.html
この方法は使えないの?

333 名前:デフォルトの名無しさん mailto:sage [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プラットフォームの相違点を一覧にしたものはありません。

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

335 名前:314 mailto:sage [2005/08/28(日) 23:04:58 ]
おかげさまで>>332
の方法で上手くいったっす。

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

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

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


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

338 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2005/09/17(土) 13:30:24 ]
それから>>332のページ、
> 日本語をそのままJavaの内部コードのUTF-8で出力したからです
って書いているけれど、内部はUCS-2だから、
default I/O encodingの間違いだね。

340 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2005/09/17(土) 21:26:30 ]
これだね。
gcc.gnu.org/onlinedocs/gcj/Extensions.html#Extensions

設定できるプロバティ
13 System properties
gcc.gnu.org/onlinedocs/gcj/System-properties.html#System-properties

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

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



344 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 00:18:14 ]
minGWでcj使おうと思ったら
gcj: installation problem, cannot exec `cc1': No such file or directory
なんて表示された。解決策分かる人いませんか

347 名前:デフォルトの名無しさん mailto:sage [2005/10/01(土) 00:33:22 ]
>>346
インストールされてないだけだべ。

348 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2005/10/03(月) 19:15:29 ]
出ない?シンボル消したとかじゃなくて出ない?

351 名前:デフォルトの名無しさん mailto:sage [2005/10/03(月) 20:42:15 ]
>>350

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

352 名前:デフォルトの名無しさん mailto:sage [2005/10/03(月) 20:46:19 ]
javacのほうはgenerate debugging symbolsを有効にしてあります。

353 名前:デフォルトの名無しさん mailto:sage [2005/10/03(月) 21:08:08 ]
gcc.gnu.org/java/gdb.html



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

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

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

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

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

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

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

363 名前:デフォルトの名無しさん mailto:sage [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 名前:デフォルトの名無しさん mailto:sage [2005/10/08(土) 01:57:21 ]
>>365
アプリケーションバンドルの実体ってフォルダだから、その気になれば
なんとでもなる気はするけどね。

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

面倒なら
cefiro.homelinux.org/topics/MinGW/setup.html
とかからバイナリ拾って展開しれ

368 名前:デフォルトの名無しさん mailto:sage [2005/10/08(土) 03:04:51 ]
>>366
developer.apple.com/documentation/CoreFoundation/Conceptual/CFBundles/Concepts/BundleAnatomy.html
のListing 1 A bundle with executable code

369 名前:デフォルトの名無しさん mailto:sage [2005/10/08(土) 05:23:30 ]
なんじゃこれ

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

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

373 名前:364 [2005/10/08(土) 12:49:52 ]
>>372

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



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

375 名前:364 [2005/10/12(水) 23:00:26 ]
事故レスです。とおもったらここで見つかりました。
www.thisiscool.com/gcc_mingw.htm#gcj40






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<142KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef