c-Assembly中的Extern函数声明会产生警告



我正在调用一个在汇编中使用以下代码片段开发的外部函数:

extern int myfunction();

除了执行代码之外,为了在程序集中声明一个函数,我使用了:

.section .text
.global myfunction
.type myfunction, @function

这应该告诉编译器程序集文件包含名为myfunction的外部函数的引用。然后我使用以下命令编译代码:

gcc -m32 -o obj/main.o -c src/main.c
gcc -m32 -o obj/myfunction.o -c src/myfunction.s
gcc -o bin/myfunction obj/main.o obj/myfunction.o -m32 

当我使用GCC 10进行编译时,会显示一个警告:

/usr/bin/ld: warning: relocation in read-only section `.text'
/usr/bin/ld: warning: creating DT_TEXTREL in a PIE

我该如何抑制该警告?

将标志--no-pie添加到构建命令中。这指定编译器不生成PIE(位置独立可执行文件(文件。PIE通常用于共享库,因此可以在每个程序地址空间中的某个位置加载相同的库代码,该位置不会与正在使用的其他内存(例如,其他共享库(重叠。

最新更新