Why my asm code can not link with clock_gettime and attr_copy_fd?

不问归期 提交于 2019-12-12 06:32:09

问题


I am trying to compile a asm code disassembled from GNU coreutils.

In the asm code, I see this:

            extrn memchr@@GLIBC_2_0:near
            extrn clock_gettime@@GLIBC_2_0:near
            extrn attr_copy_fd@@ATTR_1_1:near

and I declare externs like this:

            extern attr_copy_fd 
        extern clock_gettime
          extern memchr

then asm like this:

   nasm -f elf final.s -o final.o
   gcc -W -o final final.o

And I got errors :

   final.o: In function `loc_804BD8D':
   final.s:(.text+0x2111): undefined reference to `attr_copy_fd'
   final.o: In function `gettime':
   final.s:(.text+0xdf06): undefined reference to `clock_gettime'

I think clock_gettime is defined in GLIBC and I don't know why linker can not find it(Other functions like memchr can be found by the linker)

What is worse, I don't know where is attr_copy_fd?

When building coreuitls from source code, you should link a static library libcoreutils.a

I tried to static link it as:

gcc -L/home/computereasy/work/lib/coreutils/coreutils-8.15/lib -lcoreutils -W -o final final.o

But nothing changed. and I don't think I should link libcoreutils.a because basically all the functions required in this binary from libcoreutils.a has been put into the disassemble code...

Could anyone give me some help on how to link the clock_gettime and attr_copy_fd

Thank you!

来源:https://stackoverflow.com/questions/21770827/why-my-asm-code-can-not-link-with-clock-gettime-and-attr-copy-fd

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!