リンカースクリプトを学習しようとしています ここに私のファイルがあります
caller.c
extern void hello();
void main()
{
hello();
}
helloasm.c
#include <stdio.h>
void hello()
{
printf("\nHELLO\n\n");
}
link.lds
SECTIONS
{
. = 0x10000;
.text : { *(.text) }
. = 0x8000000;
.data : { *(.data) }
.bss : { *(.bss) }
}
コンパイル.sh
cc -S helloasm.c #generate assembly file
cc -c helloasm.s #generate object file
cc -c caller.c #generate object file
ld -o hello -T link.lds helloasm.o caller.o
私が使っているとき
cc caller.c helloasm.c
出力HELLOを取得しています
しかし、shファイルが呼び出されると、エラーが発生します**
helloasm.o: In function `hello':
helloasm.c:(.text+0xe): undefined reference to `puts'
** 誰か puts 関数が定義されていない理由を説明できますか
GNU ld (GNU Binutils for Ubuntu) 2.23.2
gcc version 4.7.3 (Ubuntu/Linaro 4.7.3-1ubuntu1)