我的问题是这样的,我试图创建一个汇编函数库,并在C程序中使用它。我遇到了一个未定义的引用错误,我在学校提供的vm上使用xubuntu(所以我想一切都设置好了......)。
我在学校为这个项目提供的vm上使用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)
谢谢你的帮助 !!!!Cheers !
section .text
global _ft_function
_ft_function:
mov rax, 42
ret
省略前面的下划线。 其他一些系统使用以下划线开头的符号名,但Linux不使用。 就这样做。
section .text
global ft_function
ft_function:
mov rax, 42
ret