OBJCOPY

发布于 2022-09-18 22:34:20 字数 70 浏览 13 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

意犹 2022-09-25 22:34:20

-G

寒江雪… 2022-09-25 22:34:20

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

蓝咒 2022-09-25 22:34:20

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

吾性傲以野 2022-09-25 22:34:20

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

野心澎湃 2022-09-25 22:34:20

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

深爱不及久伴 2022-09-25 22:34:20

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

不疑不惑不回忆 2022-09-25 22:34:20

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

千と千尋 2022-09-25 22:34:20

原帖由 cjaizss 于 2008-5-7 13:55 发表
o里为什么会有重名?没想通

API函数名一样

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

荭秂 2022-09-25 22:34:20

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

不晓得还有没有什么办法来解决这种问题? 我觉得我这种办法做起来有点烦

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文