linux 64位机器 动态库编译错误

maikeerdai 2012-09-10 10:25:52
.libs/assert.o: relocation R_X86_64_32 against `a local symbol' can not be used
when making a shared object; recompile with -fPIC .libs/assert.o: could not
read symbols: Bad value

如何解决啊? 急急急
...全文
135 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mLee79 2012-09-10
  • 打赏
  • 举报
回复
你都看到了, 肯定要加上-c三...
maikeerdai 2012-09-10
  • 打赏
  • 举报
回复
你说的不对吧,我试了,还是不行,你上面的代码是编译foo.c文件 然后生成foo.o的可执行文件
mLee79 2012-09-10
  • 打赏
  • 举报
回复
不是在生成 .so 的时候加, 在编译 .o 的时候就要加

gcc -fPIC -o foo.o foo.c

maikeerdai 2012-09-10
  • 打赏
  • 举报
回复
gcc -shared -fPIC -o lib**.so **.o 在32位机器上能通过,64位就不行
maikeerdai 2012-09-10
  • 打赏
  • 举报
回复
加了,没有用
mLee79 2012-09-10
  • 打赏
  • 举报
回复
不是写的很明白了么, 叫你编译选项加上 -fPIC 啊, 动态库必须生成位置无关代码的说...
maikeerdai 2012-09-10
  • 打赏
  • 举报
回复
ok 问题解决,多谢楼上的指引。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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