c とアセンブリ コードのリンクに問題があります。いくつかの解決策を検索しようとしましたが、どれもうまくいきませんでした。
c ファイル「l3.c」は次のようになります。
#include <stdio.h>
#include <stdlib.h>
const int INP_SIZE = 100;
extern int mult(int c1, int c2);
int main()
{
char number[INP_SIZE];
scanf("%s",number);
printf("You typed: %s \n",number);
int j=2;
int k=5;
j = mult(j,k); #here is the problem
printf("%d",j);
scanf("%s",number);
return 0;
}
そして、次のようなアセンブリ「mult.s」:
.type mult, @function
mult:
push %rbp
mov %rsp, %rbp
mov 8(%rbp), %rbx
mov 12(%rbp), %rcx
mov $0, %rax
add %rbx, %rax;
add %rcx, %rax;
mov %rbp, %rsp
pop %rbp
ret
私のメイクファイルでは、次の行を取得しました(グーグルで検索した最新のソリューション):
l3:
as -g -o mult.o mult.s
gcc -o l3.o -c l3.c
gcc l3.o mult.o
コンソールに make と入力すると、次のようにスローされます。undefined reference to 'mult'
コメントすると、//j = mult(j,k);
プログラムは正常に動作します。これをどのようにリンクすればよいですか?