在制作共享对象时,不能使用针对`.rodata'的重定位R_X86_64_32S;用-fPIC重新编译

时间:2016-04-27 00:30:32

标签: linux eclipse makefile java-native-interface

我正在尝试在Ubuntu 14.04上为Eclipse中的JNI运行以下makefile

let mutPeople = NSMutableOrderedSet(array: (people?.allObjects)!)
mutOwers.addObject(person)
people = NSSet(array:mutPeople.array)

当我尝试构建这个makefile时。我收到了以下错误:

CLASS_PATH = ../bin

vpath %.class $(CLASS_PATH)

all : libSend.so

libSend.so : Send.o
        gcc -fPIC -shared -o $@ $<

Send.o : Send.c Send.h
        gcc -fPIC -I"/usr/lib/jvm/java-8-openjdk-amd64/include" -I"/usr/lib/jvm/java-8-openjdk-amd64/include/linux" -c $< -o $@

Send.h : Send.class
        javah -classpath $(CLASS_PATH) $*

clean :
        rm Send.h Send.o libSend.so

请帮我解决此问题。

1 个答案:

答案 0 :(得分:-1)

当我遵循@ AndrewHenle的建议时,我的代码有效:

make clean; make all

谢谢@AndrewHenle。