2023-01-19 323
我正在尝试在Java代码中调用C函数.
我有这个HAVA代码.
public class JavaToC {
public native void helloC();
static {
System.loadLibrary("HelloWorld");
}
public static void main(String[] args) {
new JavaToC().helloC();
}
}
.我对其进行了编译,然后创建了标头文件.然后制作以下helloworld.c文件.
#include <stdio.h>
#include <jni.h>
#include "JavaToC.h"
JNIEXPORT void JNICALL Java_JavaToC_helloC(JNIEnv *env, jobject javaobj)
{
printf("Hello World: From C");
return;
}
我尝试使用” gcc -o libhelloworld.so -shared -i/usr/java/include -i/usr/java/include/solaris helloworld.c -lc”来编译此内容,但它给出以下结果.
Text relocation remains referenced
against symbol offset in file
.rodata (section) 0x9 /var/tmp//cc.GaGrd.o
printf 0xe /var/tmp//cc.GaGrd.o
ld: fatal: relocations remain against allocatable but non-writable sections
collect2: ld returned 1 exit status
我正在研究Solaris 11,我该如何解决?
我目前无法在Solaris机器上进行测试,但是来自 http://gcc.gnu.org/onlinedocs/gcc-4.1.0/gcc/sparc-options.html
-mimpure-text抑制了”对可分配但不可纠正的部分的重新定位”链接器错误消息.然而
必要的搬迁将触发抄袭,并共享
对象实际上并非跨进程共享.而不是使用
-mimpure-text,您应该用-fpic或-fPIC编译所有源代码.
该解决方案似乎是添加-fpic选项以生成独立于位置的代码.
以上所述是小编给大家介绍的在使用Java天然界面时,如何解决"致命:搬迁仍然针对可分配但不可靠的部分"?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/25877.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态