gpt4 book ai didi

linux - nasm 有什么方法可以自动添加使用过的外部符号吗?

转载 作者:太空宇宙 更新时间:2023-11-04 12:56:20 25 4
gpt4 key购买 nike

NASM 有没有办法为它找到的任何未声明的符号自动生成外部声明?

我现在拥有的:

  • 我的应用程序的源文件
  • 包含所有 GL_ 定义和约 500 个声明为 extern gl* 的 OpenGL 函数(由 gl.h 制作)

这当然会生成一个足够大的重定位表。

但我只使用了所有声明的 OpenGL 函数的一小部分,我想只包括我使用过的函数,可能根本不需要我自己声明外部函数?

或者我应该坚持我以前的做法,并在需要时手动声明每个新的 extern 吗?

我确实阅读了 NASMdocs 并进行了搜索,但我发现的只是如何声明外部变量以及如何在 .o 文件之间使用它们,这不是问题所在。

最佳答案

经过更多研究后,我设法找到了解决方案:剥离。

首先,我像往常一样构建我的对象和可执行文件,其中包括大型重定位表。但在每个步骤中,我都添加了 strip --strip-unneeded - 用于中间对象和最终可执行文件。

它的作用是仅保留对象中实际使用的符号,同时删除所有其他符号。它确实会在编译过程中增加一些开销,但几乎不会引起注意。

我还发现剥离 .o 文件以及可执行文件会生成最小的文件。我想在链接时添加了新符号,其中一些未使用,因此可以删除。

将其添加到 Makefile 中非常容易做到。

关于linux - nasm 有什么方法可以自动添加使用过的外部符号吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35633276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com