ld:警告:找不到条目符号_start;默认为 0000000000401000
ld: warning: cannot find entry symbol _start; defaulting to 0000000000401000
这是我在 Linux Ubuntu 中编写汇编语言代码时遇到的错误。谁能帮我解决这个错误?
这是我使用命令ld -o quadratic quadratic.o
时出现的错误
The image of Error that's coming.
我的 asm 文件的代码是这样的:
https://github.com/vedantdawange/ASM-Files/blob/main/quadratic.asm
ld
本身 links 没有库或启动代码。它适用于您使用 _start
作为入口点并通过直接调用内核而不是标准 C 库函数来执行 I/O 的程序。但是你的程序使用 main
作为它的入口点,所以它期望被 C 启动代码调用,它调用像 printf
这样的库函数。因此你应该 link 它像一个 C 程序:
gcc -no-pie -o quadratic quadratic.o
需要 -no-pie
选项,因为您的代码对静态数据进行绝对引用,例如fld qword[b]
。默认情况下,gcc 假定您要构建一个与位置无关的可执行文件,但它不能这样做;您需要编写 fld qword[rel b]
来生成相对于 rip 的有效地址。所以 -no-pie
要求 gcc link 一个非位置无关的可执行文件。有关详细信息,请参阅 。
这是我在 Linux Ubuntu 中编写汇编语言代码时遇到的错误。谁能帮我解决这个错误?
这是我使用命令ld -o quadratic quadratic.o
The image of Error that's coming.
我的 asm 文件的代码是这样的:
https://github.com/vedantdawange/ASM-Files/blob/main/quadratic.asm
ld
本身 links 没有库或启动代码。它适用于您使用 _start
作为入口点并通过直接调用内核而不是标准 C 库函数来执行 I/O 的程序。但是你的程序使用 main
作为它的入口点,所以它期望被 C 启动代码调用,它调用像 printf
这样的库函数。因此你应该 link 它像一个 C 程序:
gcc -no-pie -o quadratic quadratic.o
需要 -no-pie
选项,因为您的代码对静态数据进行绝对引用,例如fld qword[b]
。默认情况下,gcc 假定您要构建一个与位置无关的可执行文件,但它不能这样做;您需要编写 fld qword[rel b]
来生成相对于 rip 的有效地址。所以 -no-pie
要求 gcc link 一个非位置无关的可执行文件。有关详细信息,请参阅