SweeNeil 2018-11-15 06:42 采纳率: 100%
浏览 2866
已采纳

linux下,如何把libc.a静态编译进动态库中

大佬们,怎样把libc.a的内容静态编译进动态库里呀?比如我动态库里有一个printf,我要怎么把printf静态编译进去?

 

就比如我编写了一个.c文件,我想把它编译成共享库,在我这个.c中我使用了printf函数。我编译了这个共享库,但是我共享库里面调用了标准C库比如printf,这个printf里面的内容并没有被添加到我的共享库so文件中,到时候使用时还需要重定位。现在我想把我共享库里面用到的C标准库的内容,比如printf静态编译到我的共享库so文件中,让so文件中带有printf的实现。能否实现这样的情况呢?

 

现在遇到的问题是报错如下:

relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
test.o: could not read symbols: Bad value
collect2: ld returned 1 exit status

  • 写回答

1条回答

      报告相同问题?

      悬赏问题

      • ¥15 session失效问题
      • ¥15 GMS地下水数值模拟无法打开
      • ¥15 树型结构的数据怎么匹配分支
      • ¥15 stm32F4用.引不出来结构体成员怎么解决
      • ¥15 .exe文件打不开怎么解决?
      • ¥30 Syntax Error: TypeError: this.getOptions is not a function的问题
      • ¥15 eclipse Android环境搭建
      • ¥15 unity中脚本之间的继承有什么作用
      • ¥15 C语言内存对齐代码不太理解
      • ¥15 uniapp中的uni-file-picker组件多图上传,删除,显示。以及C#.Net后端处理问题