读《Professional Assembly Language》之lc消失之迷
上文里说到了,在x86-64的机器上,通过对as命令加入–32 参数,并在 ld 命令里加入-melf_i386参数,即可编译并链接成32-bit的cpuid。关于这两个参数的说明,可以参看man手册。
同样是在第四章节,链接c库函数,作者提供了另一个版本的cpuid,这次链接过程出现了新问题,可不是简单加入个参数就能解决的。是什么问题呢?如下:
$ as -gstabs --32 -o cpuid2.o cpuid2.s
$ ld -melf_i386 -dynamic-linker /lib/ld-linux.so.2 -o cpuid2 -lc cpuid2.o
ld: skipping incompatible /usr/lib/libc.so when searching for -lc
ld: skipping incompatible /usr/lib/libc.a when searching for -lc
ld: cannot find -lc