本文介绍了麻烦编译JNI的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我通过引用已经用JNI生成的头文件实现了以下C代码:

I have the following C code implemented by referencing to a header file already generated with JNI:

#include <jni.h>
#include <stdio.h>
#include "HelloWorld.h"

JNIEXPORT void JNICALL 
Java_HelloWorld_print(JNIEnv *env, jobject obj)
{
     printf("Hello World!\n");
     return;
}

当我尝试编译它(生成如此库)时使用:

When I try to compile it (to generate the so library) using:

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

如何解决这个问题?

How can I fix this issue?

推荐答案

您必须添加 linker选项

you have to add the -shared linker option

首先创建目标文件:

First create the object file:

cc -c HelloWorld.c

然后创建这样的

cc -shared -o libHelloWorld.so HelloWorld.o

这篇关于麻烦编译JNI的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-14 23:46