我通过引用已经用JNI生成的头文件实现了以下C代码:
#include <jni.h>
#include <stdio.h>
#include "HelloWorld.h"
JNIEXPORT void JNICALL
Java_HelloWorld_print(JNIEnv *env, jobject obj)
{
printf("Hello World!\n");
return;
}
当我尝试使用:
编译它(生成so库)时cc -g -I/usr/lib/jvm/java-7-openjdk/include
-I/usr/lib/jvm/java-7-openjdk/include/linux HelloWorld.c -o libHelloWorld.so
我收到了这个错误:
/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status
如何解决此问题?
答案 0 :(得分:3)
答案 1 :(得分:2)
创建so文件有两个步骤:
cc -c test.c
cc -shared test.o -o test.so
答案 2 :(得分:-1)
插入-shared标志
gcc -I/usr/lib/jvm/default-java/include -I/usr/lib/jvm/default-java/include/linux -o libmyhello.so -shared HelloWorld.c
答案 3 :(得分:-3)
您需要添加主要功能。添加
int main(){
return 0;
}
,或者int main(char *argv[], int argc)