2 votes

Compiling project in Linux terminal doesn't work

J'ai un fichier Compile.sh.
Celui-ci fonctionne à merveille :

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

Mon problème est que je ne veux pas avoir mes sources dans le dossier bin.
Je veux les avoir dans un dossier séparé.
Pour cela, mon script ressemble à ceci :

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

Je ne sais pas pourquoi celui-ci ne fonctionne pas. Je n'ai aucune exception mais le programme ne fonctionne pas correctement non plus. Savez-vous comment le corriger ?

1voto

Jim Lewis Points 18753

Le script de travail a:

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

Et l'autre version a:

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

Ainsi, SharedTable.c doit être dans le répertoire bin, et la commande gcc ne peut pas le trouver car il n'est plus dans le répertoire actuel. Essayez d'utiliser un chemin relatif à la place:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X