JavaSE-1.6을 사용하여 Suse Linux 11에 Java 프로그램을 작성하고 javac를 사용하여 빌드하는 데 문제가 있습니다.Linux에서 Java 코드에서 C 함수를 호출하는 방법
나는
http://java.sun.com/developer/onlineTraining/Programming/JDCBook/jniexamp.html
에 대한 자습서를 따라하고 지금까지 다음 쓴 :
/usr/lib/gcc/i586-suse-linux/4.3/../../../crt1.o: in function '_start':
/usr/src/packages/BUILD/glibc-2.9/csu/../sysdeps/i386/elf/start.S:115: undefined reference to 'main'
/tmp/cc97kcJu.o:(.data+0x28) undefined reference to 'hidden alias for int com::ctest::CTest::testCall()'
/tmp/cc97kcJu.o:(.data+0x74) undefined reference to 'hidden alias for int com::ctest::CTest::testCall()'
collect2: ld returned 1 exit status
: 나는 javac의의 CTest.java을 실행하면
package com.ctest;
class CTest
{
// Native method declaration
native int testCall();
// Load the library
static
{
System.loadLibrary("fpdpReaderLib");
}
public static void main(String args[])
{
int retVal;
// Create class instance
CTest cLangTest = new CTest();
// Call native method
retVal = cLangTest.testCall();
System.out.println(retVal);
}
}
내가 오류가 발생을
자바 버전이 아닌 gcc를 사용하고있는 것으로 의심됩니다. javac하지만 확실하지 않습니다.
어떤 아이디어가 될 수 있습니까?
내가 여기에 언급 된 "--main ="옵션을 사용하여 시도했다 :
http://gcc.gnu.org/java/faq.html#4_1
대신 오류로 지금 막 도착하기 전에 :
/tmp/ccwfugWq.o:(.data+0x28) undefined reference to 'hidden alias for int com::ctest::CTest::testCall()'
/tmp/ccwfugWq.o:(.data+0x74) undefined reference to 'hidden alias for int com::ctest::CTest::testCall()'
collect2: ld returned 1 exit status
감사합니다. JDK가 망가져 버렸습니다. 이제 다시 설치 했으므로 경로가 수정되어 아무런 문제없이 javac을 실행할 수 있습니다. 이제 javah가 내 헤더 파일을 올바르게 작성했습니다. –