2016-10-19 10 views
2

私はCompile.shファイルを持っています。
この1つは魔法のように動作:Linux端末でプロジェクトをコンパイルできない

cd src 
javac model/JNIResultSet.java 
javah -jni model.JNIResultSet 
cp model_JNIResultSet.h ./../bin/ 
cd .. 

cd bin 

gcc -fPIC -o libspieler.so -shared -I/usr/java/jdk1.8.0_73/include/ SharedTable.c -lc 

java -Djava.library.path=./../bin/ app.Main 

私の問題は、私はbinフォルダに私の情報源を持ってしたくないということです。
私はそれらを別のフォルダに入れたいと思っています。私のスクリプトはこの1つのように見えることについては
:この1つは機能しない理由

cd src 
javac model/JNIResultSet.java 
javah -jni model.JNIResultSet 
cp model_JNIResultSet.h ./../data/ 
cd .. 

cd data 

gcc -fPIC -o libspieler.so -shared -I/usr/java/jdk1.8.0_73/include/ SharedTable.c -lc 
cd .. 
cd bin 
java -Djava.library.path=./../data/ app.Main 

は私は知りません。例外はありませんが、プログラムも正しく動作しません。あなたはそれを修正する方法を知っていますか?

+0

"libspeiler.so"はどちらの場合も作成されていますか?または、コンパイラのエラーは何ですか? .soをロードするためにどのようなコードを使用していますか? – Jamie

+0

エラーはありません。Cプロジェクトはtxtファイルから読み込む必要があります。私は、別のフォルダにテーブルが空の場合は、コードを変更せずに、binフォルダにソースがある場合 – mafioso

+0

は、デバッガを介してステップスルーと新しいバージョンでうまくいくのを参照してください..私の最初の推測だろう相対ファイルパスが何らかの形で破棄されるようになりました。 – yano

答えて

1

作業スクリプトがあります

cd bin 
gcc -fPIC -o libspieler.so -shared -I/usr/java/jdk1.8.0_73/include/ SharedTable.c 

そして、他のバージョンがあります:

cd data 
gcc -fPIC -o libspieler.so -shared -I/usr/java/jdk1.8.0_73/include/ SharedTable.c -lc 

のでSharedTable.cbinディレクトリにある必要があり、それが何だからgccコマンドはそれを見つけることはできません現在のディレクトリではより長い。代わりに相対パスを使用して を試してみてください。

gcc -fPIC -o libspieler.so -shared -I/usr/java/jdk1.8.0_73/include/ ../bin/SharedTable.c -lc 
関連する問題