我有一个问题,我在调用malloc时无法编译我的strdup . 当我不打电话给malloc时,它会完美地编译我的共享库,所以如果有人可以帮助我那就太棒了!
这是我的代码:
BITS 64
DEFAULT REL
global my_strdup:function
extern malloc
my_strdup:
[...]
call malloc
我用这个编译:
$> nasm -f elf64 my_strdup.S
$> gcc -shared -o libmy.so my_strdup.o
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld:my_strdup.o:重定位R_X86_64_PC32对未定义的符号`malloc @@制作共享对象时不能使用GLIBC_2.2.5';使用-fPIC /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld重新编译:最终链接失败:错误值collect2:错误:ld返回1退出状态
我有这个错误 . 我不明白!我有一台64位电脑 . 这是我第一次尝试装配 .
谢谢 !
1 回答
创建从另一个共享库调用函数的共享库可能不是第一个汇编程序的最佳选择;)
也就是说,这是nasm manual对此有何评论:
所以,你需要的是
call malloc wrt ..plt
.