本文介绍了明确指定为LD符号位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

让我们假设我有以下的C code:

 的extern INT F_1();
EXTERN INT G_1();EXTERN INT F_2();
EXTERN INT G_2();EXTERN INT F_3();
EXTERN INT G_3();INT主(INT ARGC,字符** argv的){
    //使用F_1,F_2,这里F_3和G_1,G_2,G_3:
    ...
}

和我想用3种不同的库进行链接构建它: L1 12 13 - 假设他们每个人出口自己的˚F先按g 功能 - - 这样:


  • F_1 G_1 将被解析为˚F先按g L1 分别为;

  • F_2 G_2 将被解析为˚F先按g 12 分别为;

  • F_3 G_3 将被解析为˚F先按g 13 分别。

这是可能用gcc和ld:


  1. 这是可能的,如果 L1 12 13 共享库(的.so )?

  2. 这是可能的,如果 L1 12 13 是归档( .A )?


解决方案

objcopy把 - 重新定义 - 均选项是你的朋友:

Apply it to you libraries l1, l2, l3. It should work both for .a and .so.

这篇关于明确指定为LD符号位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-12 19:45