问题标签 [got]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
npm - 我安装的 NPM 模块导致错误 [ERR_REQUIRE_ESM]: Must use import to load ES Module
我已将got
NPM 模块安装到我的项目中,但现在它引起了问题。
它说要删除type:module
,但我不能这样做,因为它是 NPM 模块而不是我的。
我该如何解决这个问题?
这是一个使用 NestJS 生成的新项目,其中没有其他可能导致问题的项目。
c - 在共享对象中,为什么 gcc 会通过 GOT 对定义在同一个共享对象中的全局变量进行重定位?
在 Stack 上回答另一个问题时,我自己也遇到了一个问题。在 shared.c 中使用以下代码:
编译:
如果我用 反汇编代码objdump -D shared.so
,我会得到以下信息shared_func
:
使用readelf -S shared.so
,我得到(对于 GOT):
如果我错了,请纠正我,但是,看看这个,访问的重定位glob_var
似乎是通过 GOT。正如我在一些网站上所读到的,这是由于 x86-64 机器代码的限制,其中 RIP 相对寻址被限制为 32 位偏移量。这个解释让我不太满意,因为由于全局变量在同一个共享对象中,所以保证在自己的数据段中可以找到。因此可以使用 RIP 相对寻址来访问全局变量而不会出现问题。
glob_var
如果已声明GOT 重定位,我会理解,extern
但在这种情况下,它是在同一个共享对象中定义的。为什么 gcc 需要通过 GOT 进行重定位?是因为它无法检测到全局变量是在同一个共享对象中定义的吗?
相关: 为什么在使用 GOT 引用的共享对象中定义非静态全局变量?
以上是11岁,没有回答我的问题,因为那里似乎没有合适的答案。
奖励:<glob_var@@Base-0x54>
反汇编是什么意思shared_func
?为什么不是<glob_var@GOT>
?
谢谢你的帮助!