6

私は Apache Ant と GCJ の両方にかなり慣れていないので、Ant 経由で GCJ を構築しようとして苦労しています。

私のアプリは Scala にあるので、GCJ を使用して .class ファイルをソースとして取得する必要があります。Ant で .scala を .class にコンパイルしても問題ありません。

最初に、.class ファイルを手動で .o (オブジェクト) にコンパイルする方法を次のように考えました。

gcj --classpath=(...) -c (somepath)MouseClickListener.class -o (somepath)MouseClickListener.o

Ant が javac タグによる GCJ コンパイルをサポートしていることがわかります。だから私はこれがうまくいくはずだと考えました:

<target name="gcjCompile" depends="compile">
    <mkdir dir="${object.dir}" />
    <javac srcdir="${build.dir}"
           destdir="${object.dir}"
           compiler="gcj"
           executable="C:/gcc/gcc-4.3/bin/gcj.exe"
           classpathref="gcjProject.classpath">
        <include name="**/*.class"/>
    </javac>
</target>

しかし、この javac タスクは何もせず、エラーも発生しません。手がかりはありますか?ありがとう

4

1 に答える 1

1

アプリをネイティブ実行可能ファイルにリンクしたいようです。これは、ソースを JVM バイトコードにコンパイル済みであることを意味します (.scala を .class ファイルにコンパイルすることで理解したように)。gcjタスクを使用してコマンドを手動で実行<exec>し、バイトコードを gcc オブジェクト コード ファイルにコンパイルする必要があります。

次のようなものをお勧めします。

<property name="main.class" value="Main" />
<property name="class.dir" value="${basedir}/classes" />
<target name="compile">
  <mkdir dir="${class.dir}" />
  <javac srcdir="${build.dir}"
         destdir="${class.dir}"
         compiler="gcj"
         executable="C:/gcc/gcc-4.3/bin/gcj.exe"
         classpathref="gcjProject.classpath">
    <include name="**/*.java"/>
  </javac>
</target>
<target name="link" depends="compile">
  <mkdir dir="${object.dir"} />
  <exec cmd="C:/gcc/gcc-4.3/bin/gcj.exe">
    <arg value="-classpath=${object.dir}" />
    <arg value="-c" />
    <arg value="*.class" />
  </exec>
</target>

build.dirおよびプロパティを定義する必要があることに注意してください。また、コンパイル ターゲットの javac の前にタスクobject.dirを追加する必要がある場合がありますdepends(または、毎回最初から再コンパイルする必要があります)。多くのことを見逃している可能性があります。最初に機能しない場合は、(gcj、gcc、および ant の) マニュアル ページを確認してください。

于 2011-01-17T13:04:51.893 に答える