这是我的问题,我尝试创建一个汇编函数库并将其与C程序一起使用。我遇到未定义的参考错误。
我在学校为该项目提供的虚拟机上使用xubuntu(所以我想一切设置都很好...)
汇编文件(ft_function.s)
section .text
global _ft_function
_ft_function:
mov rax, 42
ret
C文件(main.c)
extern int ft_function(char const *str);
int main()
{
return (ft_function("abc"));
}
目前,由于问题仍然存在,我没有创建库,只是为了减少最简单的情况,所以我生成了目标文件,然后将它们与clang链接。
nasm -f elf64 ft_function.s -o ft_function.o
clang -c main.c
clang ft_function.o main.o
main.o: In function `main':
main.c:(.text+0x1a): undefined reference to `ft_function'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
谢谢你的帮助 !干杯!
section .text
global _ft_function
_ft_function:
mov rax, 42
ret
省略领先的下划线。其他一些系统使用以下划线开头的符号名称,但Linux不使用。做就是了:
section .text
global ft_function
ft_function:
mov rax, 42
ret
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句