链接内核-输入文件的i386体系结构与i386:x86_64输出不兼容

大伯杰

我正在尝试从汇编文件内核阶段转到C文件内核阶段(最终...)。但是,在将我的已编译C内核链接到我的已编译程序集内核入口程序的过程中遇到了一些麻烦。

这是我的kernel_entry.asm文件的代码。

[BITS 32]           ; Starting in 32 bit protected mode
[EXTERN main]           ; Extern to C file main function

call main           ; Invoke main in our C kernel

jmp $               ; Jump here - Infinite loop

这是我的kernel.c文件的代码。

void main() {
  char* video_memory = (char*) 0xB8000;
  *video_memory = 'X';
}

这是我用来编译它们的命令行。

nasm -f elf -o kernel_entry.o kernel_entry.asm
gcc -ffreestanding -c kernel.c -o kernel.o
ld -o kernel.bin -Ttext 0x0500 kernel_entry.o kernel.o --oformat binary

最后一个命令行给了我这个错误。

ld: i386 architecture of input file `kernel_entry.o' is incompatible with i386:x86-64 output
ld: warning: cannot find entry symbol _start; defaulting to 0000000000000500

注意:我正在将内核加载到地址和偏移量0x0000:0x0500,这就是为什么我使用-Ttext 0x0500的原因,我不确定为什么会出现第二个ld警告,但目前看来似乎并不重要(尽管如果您在这方面提供了任何帮助,也将不胜感激)。

谁能告诉我为什么我不能将这些文件链接在一起?我也在Ubuntu dekstop 64位上运行。预先感谢您提供的任何帮助。

黄昏-无效-

看来您是在64位系统上编译此代码。因此,kernel.o它是64位二进制文​​件,不能与32位二进制文​​件链接kernel_entry.o

由于您没有任何代码可以使系统进入长模式,因此您可能希望将“内核”编译为32位代码。使用-m32触发此:

gcc -m32 -ffreestanding -c kernel.c -o kernel.o
    ^^^^

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Xcode 6.1:文件是为x86_64构建的,该文件不是要链接的体系结构(i386)

来自分类Dev

仅“仅构建活动体系结构”时出现“ Cordova链接器错误”“不是为要链接的体系结构构建的用于存档的文件(i386)”

来自分类Dev

calabash-ios-找不到体系结构i386的符号-链接器命令失败,退出代码为1

来自分类Dev

ld:为iOS Simulator构建,但与为MacOSX文件'RemObjectsSDK.framework / RemObjectsSDK'构建的dylib链接,用于体系结构i386

来自分类Dev

该文件是为不是链接的体系结构的arm64构建的(x86_64)

来自分类Dev

错误ITMS-9000:“不支持的体系结构。您的可执行文件包含不支持的体系结构'[x86_64,i386]'”

来自分类Dev

链接64位内核

来自分类Dev

Xcode错误:文件是为归档而构建的,而不是链接的体系结构(x86_64)

来自分类Dev

文件是为存档而构建的,而不是链接的体系结构(x86_64)

来自分类Dev

易于寻找i386文件,即使体系结构是amd64

来自分类Dev

易于寻找i386文件,即使体系结构是amd64

来自分类Dev

在CentOS 7 i386上安装实时内核

来自分类Dev

体系结构i386的8个重复符号

来自分类Dev

Swift:Apple Mach-O链接器错误(文件对于体系结构x86_64太小)

来自分类Dev

为存档构建的静态库,不是链接的体系结构(x86_64)

来自分类Dev

编译/链接错误:体系结构x86_64的未定义符号

来自分类Dev

体系结构x86_64的未定义符号:链接错误?

来自分类Dev

体系结构x86_64的未定义符号:链接错误?

来自分类Dev

在64位系统中具有体系结构i386的复杂性?

来自分类Dev

为iOS模拟器构建,但链接到为OSX构建的目标文件,用于Xcode 7中的体系结构x86_64

来自分类Dev

从内核中删除i386是否意味着Ubuntu放弃了32位支持?

来自分类Dev

FBSDKLoginManager:体系结构x86_64的未定义符号+链接器命令失败,退出代码为1

来自分类Dev

将FFTW与gfortran链接时出现问题(对于体系结构x86_64未找到符号)

来自分类Dev

体系结构x86_64的未定义符号,链接器命令失败,退出代码为1

来自分类Dev

Apple Mach-O链接器错误,体系结构x86_64的未定义符号

来自分类Dev

ParseFacebookUtil:Apple Mach-O链接器,体系结构x86_64 PFDateFormatter的未定义符号

来自分类Dev

体系结构 x86_64 和链接器命令的未定义符号失败,退出代码为 1

来自分类Dev

如何修复“x86_64 体系结构的未定义符号:“_get_driver_instance””链接器错误

来自分类Dev

机器类型(C ++库):i386与x86_64

Related 相关文章

  1. 1

    Xcode 6.1:文件是为x86_64构建的,该文件不是要链接的体系结构(i386)

  2. 2

    仅“仅构建活动体系结构”时出现“ Cordova链接器错误”“不是为要链接的体系结构构建的用于存档的文件(i386)”

  3. 3

    calabash-ios-找不到体系结构i386的符号-链接器命令失败,退出代码为1

  4. 4

    ld:为iOS Simulator构建,但与为MacOSX文件'RemObjectsSDK.framework / RemObjectsSDK'构建的dylib链接,用于体系结构i386

  5. 5

    该文件是为不是链接的体系结构的arm64构建的(x86_64)

  6. 6

    错误ITMS-9000:“不支持的体系结构。您的可执行文件包含不支持的体系结构'[x86_64,i386]'”

  7. 7

    链接64位内核

  8. 8

    Xcode错误:文件是为归档而构建的,而不是链接的体系结构(x86_64)

  9. 9

    文件是为存档而构建的,而不是链接的体系结构(x86_64)

  10. 10

    易于寻找i386文件,即使体系结构是amd64

  11. 11

    易于寻找i386文件,即使体系结构是amd64

  12. 12

    在CentOS 7 i386上安装实时内核

  13. 13

    体系结构i386的8个重复符号

  14. 14

    Swift:Apple Mach-O链接器错误(文件对于体系结构x86_64太小)

  15. 15

    为存档构建的静态库,不是链接的体系结构(x86_64)

  16. 16

    编译/链接错误:体系结构x86_64的未定义符号

  17. 17

    体系结构x86_64的未定义符号:链接错误?

  18. 18

    体系结构x86_64的未定义符号:链接错误?

  19. 19

    在64位系统中具有体系结构i386的复杂性?

  20. 20

    为iOS模拟器构建,但链接到为OSX构建的目标文件,用于Xcode 7中的体系结构x86_64

  21. 21

    从内核中删除i386是否意味着Ubuntu放弃了32位支持?

  22. 22

    FBSDKLoginManager:体系结构x86_64的未定义符号+链接器命令失败,退出代码为1

  23. 23

    将FFTW与gfortran链接时出现问题(对于体系结构x86_64未找到符号)

  24. 24

    体系结构x86_64的未定义符号,链接器命令失败,退出代码为1

  25. 25

    Apple Mach-O链接器错误,体系结构x86_64的未定义符号

  26. 26

    ParseFacebookUtil:Apple Mach-O链接器,体系结构x86_64 PFDateFormatter的未定义符号

  27. 27

    体系结构 x86_64 和链接器命令的未定义符号失败,退出代码为 1

  28. 28

    如何修复“x86_64 体系结构的未定义符号:“_get_driver_instance””链接器错误

  29. 29

    机器类型(C ++库):i386与x86_64

热门标签

归档