gpt4 book ai didi

c - 链接器脚本不起作用?

转载 作者:行者123 更新时间:2023-11-30 17:27:21 28 4
gpt4 key购买 nike

我有一个非常简单的程序(simple.c):

#include <stdio.h>
int main(){
int a = 4;
return 0;
}

我正在尝试使用以下链接描述文件(内存):

MEMORY
{
m_text : ORIGIN = 0x0000000000400000, LENGTH = 0x0001FBF0
m_data : ORIGIN = 0x0000000000600000, LENGTH = 0x00004000
}

SECTIONS
{
.text :
{
*(.text) /* Program Code */
} > m_text

.data : { *(.data) } > m_data
.bss : { *(.bss) } > m_data
}

我使用以下命令来编译和链接:

gcc -c simple.c

ld -T MEMORY -o simple -dynamic-linker /lib64/ld-linux-x86-64.so.2 /usr/lib/x86_64-linux-gnu/crt1.o /usr/lib/x86_64-linux-gnu/crti.o /usr/lib/x86_64-linux-gnu/crtn.o simple.o

我收到以下错误:

ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 11
.
.
.
ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_line): relocation 0 has invalid symbol index 2
/usr/lib/x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x12): undefined reference to `__libc_csu_fini'
/usr/lib/x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x19): undefined reference to `__libc_csu_init'
/usr/lib/x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x25): undefined reference to `__libc_start_main'
simple.o: In function `main':
simple.c:(.text+0xa): undefined reference to `puts'

如果我尝试使用:

ld -T MEMORY4 -o simple -dynamic-linker /lib64/ld-linux-x86-64.so.2 /usr/lib/x86_64-linux-gnu/crt1.o /usr/lib/x86_64-linux-gnu/crti.o /usr/lib/x86_64-linux-gnu/crtn.o simple.o -lc

它给出了错误

ld: cannot find -lc

有什么建议吗?我想做的就是将我的 simple.c 放入默认的某个不同的内存区域。

最佳答案

有几个问题,但主要问题是链接器脚本没有 .debug_info 或 .debug_line 部分。

关于c - 链接器脚本不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26438582/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com