java - 在 Linux 终端中编译项目不起作用

标签 java c linux java-native-interface

我有一个 Compile.sh 文件。
这个就像一个魅力:

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 文件夹中。
我想将它们放在单独的文件夹中。
为此,我的脚本看起来像这样:

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

我不知道为什么这个不起作用。我也不异常(exception),但该程序也无法正常工作。你知道怎么解决吗?

最佳答案

工作脚本有:

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.c肯定在bin目录下,gcc命令找不到,因为它已经不在当前目录。尝试 改为使用相对路径:

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

关于java - 在 Linux 终端中编译项目不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40141415/

相关文章:

linux - 如何通过 ssh 复制文件

java - Spring Boot - 事务管理不起作用

java - 具有自定义日历系统的 Quartz 调度程序

C初始化指向数组文字的指针,无需额外变量

linux - nginx permission denied 错误获取

linux - 在 Zorin 7 Linux 操作系统上使用 Visual Studio?

java - 方法 userAccounts() 未定义类型 new View.OnClickListener(){}

java - Java 中的 ASCII 到 UTF-8 的转换

c - 如果 C 试图扫描整数变量中的字符会发生什么

c - 无法将 wchar_t 的内容复制到另一个已 malloc 的 wchar_t var 中?