2012-03-12 109 views
2

我开发了一个针对android平台的应用程序,它针对的是ARM处理器。它工作的很好。我想在运行在MIPS(32位)处理器上的Android上尝试相同的应用程序。 - 编译应用程序,但无法生成共享库。我正在使用为MIPS处理器定制的MIPS ndk和android源代码。在生成静态库时,它不显示任何错误,但在生成共享库时,出现以下错误:针对MIPS处理器的交叉编译

/home/user/android-ndk-r7m/toolchains/mips-linux-android-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/mips-linux-android/4.4。 3 /../../../../ mips-linux-android/bin/ld:/home/user/workspace/testing/ccl_obj/libccl.a(teccl_call_initiate.o):根据`__gnu_local_gp'重定位R_MIPS_HI16'不能使用wh制作共享对象;用-fPIC重新编译 /home/user/workspace/testing/ccl_obj/libccl.a:无法读取符号:错误值 collect2:ld返回1退出状态 make:* [obj/local/mips-r2/libhello-jni.so]错误1

请提出任何解决方案。

谢谢

回答

0

该错误似乎表明该怎么做。

编译源代码时,添加-fPIC编译器标志。

+0

但是这个标记已经在setup.mk文件中。 – Sujanian 2012-03-12 12:57:32

+0

你确定它正在使用? .c文件是否用-fPIC标志编译?你似乎有一些libccl.a,那是什么?它看起来像一个静态库,与您创建的共享库相比,它有什么相关性? – nos 2012-03-12 13:06:05

+0

我没有使用这个-fPIC标志explicity编译.c文件。在为ARM编译时它没有显示任何错误.libccl.a是编译.c文件后创建的静态库。我的.so文件依赖于这个静态库。但它无法读取这个文件。 – Sujanian 2012-03-13 11:18:50

-1

以防万一,如果有人面对这个problem.run

make clean 
make 

我今天得到了类似的问题,并运行清洁解决我的问题。