交叉编译运行,加载动态库出错?提示"Can't modify xx.so's text section"
各位达人,我遇到一个问题,在海思3510平台上运行程序,提示错误如下:
"Can't modify /lib/libComuServ.so's text section. Use GCC option -fPIC for shared objects, please."
我编写了一个动态库libComuServ.so, 用可执行程序UseComuServ加载这个动态库, 使用交叉编译工具编译动态库和可执行程序,都没有提示编译错误,最后运行UseComuServ时却出现上述错误提示.
编译过程为:
arm-linux-uclibc-g++ -c ComuServ.cpp
arm-linux-uclibc-g++ -shared -fPIC -o libComuServ.so ComuServ.o
arm-linux-uclibc-g++ -c UseComuServ.c
arm-linux-uclibc-g++ -L. -lComuServ -o UseComuServ UseComuServ.o
但是,相同代码,在Ubuntu上使用g++进行编译,然后在Ubuntu上运行,完全正常
请问,这可能是什么原因造成,如何解决? 是否交叉编译工具有一些问题?
这个问题我搜了下,论坛里有人问过但没有答案