Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux ld:警告:找不到输入符号\u start;默认为0000000000 401000_Linux_Assembly_Nasm_Ld - Fatal编程技术网

Linux ld:警告:找不到输入符号\u start;默认为0000000000 401000

Linux ld:警告:找不到输入符号\u start;默认为0000000000 401000,linux,assembly,nasm,ld,Linux,Assembly,Nasm,Ld,这是我在Linux Ubuntu中使用汇编语言编写代码时遇到的错误。有人能帮我解决这个错误吗 这是我使用命令ld-o quadratic.o 我的asm文件的代码如下: ld本身没有链接库或启动代码。它适用于使用\u start作为入口点,通过直接调用内核而不是标准的C库函数进行I/O的程序。但是您的程序使用main作为其入口点,因此它希望被C启动代码调用,并调用库函数,如printf。因此,您应该将其链接为C程序: gcc -no-pie -o quadratic quadratic.o

这是我在Linux Ubuntu中使用汇编语言编写代码时遇到的错误。有人能帮我解决这个错误吗

这是我使用命令
ld-o quadratic.o

我的asm文件的代码如下:


ld本身没有链接库或启动代码。它适用于使用
\u start
作为入口点,通过直接调用内核而不是标准的C库函数进行I/O的程序。但是您的程序使用
main
作为其入口点,因此它希望被C启动代码调用,并调用库函数,如
printf
。因此,您应该将其链接为C程序:

gcc -no-pie -o quadratic quadratic.o

由于您的代码绝对引用静态数据,例如
fld qword[b]
,因此不需要使用
-无饼图
选项。默认情况下,gcc假设您想要构建一个独立于位置的可执行文件,但它不能做到这一点;您需要编写
fldqword[rel b]
来生成一个rip相对有效地址。因此,
-no pie
要求gcc链接一个非位置独立的可执行文件。有关详细信息,请参阅。

ld本身没有库或启动代码链接。它适用于使用
\u start
作为入口点,通过直接调用内核而不是标准的C库函数进行I/O的程序。但是您的程序使用
main
作为其入口点,因此它希望被C启动代码调用,并调用库函数,如
printf
。因此,您应该将其链接为C程序:

gcc -no-pie -o quadratic quadratic.o

由于您的代码绝对引用静态数据,例如
fld qword[b]
,因此不需要使用
-无饼图
选项。默认情况下,gcc假设您想要构建一个独立于位置的可执行文件,但它不能做到这一点;您需要编写
fldqword[rel b]
来生成一个rip相对有效地址。因此,
-no pie
要求gcc链接一个非位置独立的可执行文件。有关这方面的更多信息,请参阅。

仍然有效。此错误即将发生。在创建饼图对象时,无法使用针对“bss”的R_X86_64_32S;使用-fPIE collect2重新编译:错误:ld返回了1个退出状态可能
默认rel
(在任何内存访问之前)会有所帮助。@VEDANTDAWANGE:您的代码需要
-无饼图
。请参见编辑。@VEDANTDAWANGE:您应该始终使用
默认rel
;RIP相对访问更有效。但是,如果您没有通过PLT或GET手动间接调用任何库函数,那么您可能需要
-无饼图
。另外,通常没有太多理由在x86-64上使用旧式x87作为浮点;用于
movsd
/
addsd
等的SSE2保证可用。x87只在需要比64位双精度更高的精度时才最有用,但80位x87就足够了。@ecm:令人惊讶的是,
default rel
会影响出现在它前面的内存引用,至少在我上次检查时是这样。IDK,如果这是故意的或者是NASM错误,但是你可以把它放在一个文件的末尾。看起来仍然有效。此错误即将发生。在创建饼图对象时,无法使用针对“bss”的R_X86_64_32S;使用-fPIE collect2重新编译:错误:ld返回了1个退出状态可能
默认rel
(在任何内存访问之前)会有所帮助。@VEDANTDAWANGE:您的代码需要
-无饼图
。请参见编辑。@VEDANTDAWANGE:您应该始终使用
默认rel
;RIP相对访问更有效。但是,如果您没有通过PLT或GET手动间接调用任何库函数,那么您可能需要
-无饼图
。另外,通常没有太多理由在x86-64上使用旧式x87作为浮点;用于
movsd
/
addsd
等的SSE2保证可用。x87只在需要比64位双精度更高的精度时才最有用,但80位x87就足够了。@ecm:令人惊讶的是,
default rel
会影响出现在它前面的内存引用,至少在我上次检查时是这样。IDK,如果这是故意的或者是NASM错误,但是你可以把它放在一个文件的末尾。这不是一个错误,而是一个警告。这就是为什么您可以汇编并链接一个
.asm
,其中只包含一条您想在调试器中单步执行的指令。例如
cat>foo.asm
/
mov-rax,1234
/control-d/nasm/ld/gdb./a.out这不是错误,而是警告。这就是为什么您可以汇编并链接一个
.asm
,其中只包含一条您想在调试器中单步执行的指令。如
cat>foo.asm
/
mov-rax,1234
/control-d/nasm/ld/gdb./a.out