交叉编译运行,加载动态库出错?提示"Can't modify xx.so's text section"

bachelor2001 2009-11-12 11:28:49
各位达人,我遇到一个问题,在海思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上运行,完全正常

请问,这可能是什么原因造成,如何解决? 是否交叉编译工具有一些问题?

这个问题我搜了下,论坛里有人问过但没有答案
...全文
563 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongboangel 2012-07-12
  • 打赏
  • 举报
回复
重新安装一下交叉编译工具!
Tom_殇子 2012-07-12
  • 打赏
  • 举报
回复
请问楼主!这个问题是怎么解决的!?
wyjkk 2010-08-10
  • 打赏
  • 举报
回复
这样的问题一般是交叉编译环境被污染了。
wzyzb 2010-08-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wyjkk 的回复:]

这样的问题一般是交叉编译环境被污染了。
[/Quote]真的? 污染是什么意思
wzyzb 2010-08-09
  • 打赏
  • 举报
回复
楼主这个问题是怎么解决的?
wangqingshui531 2009-11-12
  • 打赏
  • 举报
回复
学习下,帮顶
bachelor2001 2009-11-12
  • 打赏
  • 举报
回复
我试过每一句都加 -fPIC, 位置放前面和后面都试过,结果一样....
rzsheng 2009-11-12
  • 打赏
  • 举报
回复
Use GCC option -fPIC for shared objects, please

从这句话来看你应该用 -share -fPIC -o
但你的编译过程来看你也这么用了,是不是这几个文件都用这个编译选项呢?
squiffy 2009-11-12
  • 打赏
  • 举报
回复
up & study
  • 打赏
  • 举报
回复
是不是你板子里的一些库跟交叉的主机环境不一致呢?
http://topic.csdn.net/u/20071013/21/299d51d3-a5db-45f1-8cac-acab3b435425.html

你先测试一个最基本的so库,就带一个hello world功能,看在板子上可以成功不?
bachelor2001 2009-11-12
  • 打赏
  • 举报
回复
自己顶一下...

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧