xiaodada 发表于 2008-05-06 20:41

OBJCOPY

HI ALL;
    我怎么能用objcopy命令将.o文件中的某几个symble全局化, 其他的都本地化

cjaizss 发表于 2008-05-06 23:48

-G

xiaodada 发表于 2008-05-07 08:55

-G 只是将某一个全局化, 其他的都局部
-G --keep-global-symbol <name>   Localize all symbols except <name>

cjaizss 发表于 2008-05-07 09:05

你不知道-G xx -Gxx -G xx.....
几个连一起啊

xiaodada 发表于 2008-05-07 12:09

谢谢
        我碰到的问题是这样的。 现在在我们的一个系列的L3交换机中用了两快不同的L2 switch芯片。但是我们的一个系列的交换机用的是一个image,这样就产生了这样一个问题:在我们的这一个image中需要同时支持这样两种L2 switch芯片。我们用了他们厂商的API,用这套API靠不同的宏来编译不同的l2 switch 的驱动(所以有N多的函数重名)。 以前我们只用了一种l2 switch,把他编成了一个静态库. 现在显然不能再编成两个静态库(用的是C)。现在我的想法是做个对不同芯片的driver在封装。 编成一个.o 然后把里面的重名的全局符号变成局部的, 最后再链接。
        不知道解决这种情况时候有更好的办法,谢谢。

cjaizss 发表于 2008-05-07 13:02

干什么用想着用一个o文件?两个o文件不是挺好吗?

xiaodada 发表于 2008-05-07 13:05

没个芯片一个.o 但是这些.o里是有重名的. 所以用objcopy局部化我不想导出的符号.

cjaizss 发表于 2008-05-07 13:55

o里为什么会有重名?没想通

lllaaa 发表于 2008-05-07 20:09

原帖由 cjaizss 于 2008-5-7 13:55 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
o里为什么会有重名?没想通

API函数名一样




LZ用的marvell的芯片还是broadcom的?

xiaodada 发表于 2008-05-08 09:07

VITESSE的, L2 switch. 我现在对要用的进行再封装(每种芯片多一个再封状文件),把那个再封状的文件和原来编一起. 每种芯片的生成一个.O. 那这样的话, 除了再封状文件倒出的全局符号是完全不同的. 原来API里的符号还是冲突的. 因为我已经再封状了下, 所以原来API中的全局符号在最后link的时候不用了(用了就冲突), 所以把他们都局部化.

不晓得还有没有什么办法来解决这种问题? 我觉得我这种办法做起来有点烦
页: [1] 2
查看完整版本: OBJCOPY