GNU-EFIプログラムをコンパイルできません

Mhi2002

私はUEFIシェルについて研究するために1つのチュートリアルに従いました問題は私がコンパイルしようとすると私が理解していないこれを取得することです

ERROR:`hello.c: In function ‘efi_main’:
hello.c:8:10: warning: passing argument 1 of ‘Print’ from incompatible pointer type [-Wincompatible-pointer-types]
    Print(L"Hi,,,");
          ^~~~~~~~
In file included from hello.c:2:0:
/usr/local/include/efi/efilib.h:503:1: note: expected ‘const CHAR16 * {aka const short unsigned int *}’ but argument is of type ‘int *’
 Print (
 ^~~~~
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
/tmp/ccGlbBgD.o: In function `efi_main':
hello.c:(.text+0x1f): undefined reference to `InitializeLib'
hello.c:(.text+0x30): undefined reference to `Print'
collect2: error: ld returned 1 exit status`

チュートリアルURL:「https://www.rodsbooks.com/efi-programming/hello.html

ちなみに私はCプログラミングは初めてです

編集: gccバージョン7.4.0および5.5.0を試してプログラムをコンパイルし、さらに「sudo apt-get install gnu-efi」を介してgnu-efiをインストールし、チュートリアルからコードに変更を加えました。コードは次のとおりです。

#include <efi/efi.h>
#include <efi/efilib.h>
EFI_STATUS
EFIAPI
efi_main (EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) {
    InitializeLib(ImageHandle, SystemTable);
    Print(L"Hi,,,");
    return EFI_SUCCESS;
}

私が試したコマンド

GCC v7.4.0gcc hello.c -I /usr/include/efi/x86_64

GCC v5.5.0gcc-5 hello.c -I /usr/include/efi/x86_64

カミルクク

このエラーは、efiプログラムのコンパイル中に必要だったコンパイラオプションを使用しなかったために発生します。表示されるエラーは、-fshort-wcharオプションがないために発生します。未定義の参照は、efiライブラリに対してリンクしていないことに起因します。undefined reference to 'main'使用していないから来て-shared、コンパイルオプションを。

リンクしたサイトには、プログラムのコンパイル方法に関するmakefileの例が示されています。このサイトには、プログラムのコンパイルに使用されるいくつかのコンパイルフラグについての簡単な説明もあります。最も簡単なのは、そのmakefileを使用することです。それに従ってefiプログラムをコンパイルします。

もう1つの方法は、makefileからコンパイルフラグとリンカーフラグを手動で抽出し、適切なコンパイルオプションを使用してコンパイルすることです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

CMake:Cコンパイラは単純なテストプログラムをコンパイルできません。驚いたことに、Cコンパイラの識別は不明ですが、CXXはGNU4.9.2です。

分類Dev

Cプログラムをコンパイルすると、コードブロックで「検索パスに実行可能なコンパイラが見つかりません(GNU GCCコンパイラ)」が表示されます。

分類Dev

malloc__hooksのGNUサンプルをコンパイルできません

分類Dev

特定のマクロを展開できません(GNU99コンパイラ)

分類Dev

プログラムをコンパイルできません

分類Dev

Haxe 2.09はコンパイルできません["Zebra"、 "Gnu"、 "Elephant"]。map(callback(String.toLowerCase));

分類Dev

マニュアルを読んでも、Ubuntu GNU / Linuxのtrコマンドで-cパラメーターが何をするのか理解できません

分類Dev

GNU Emacs23のGDBモードでローカルキーバインディングをカスタマイズできませんでした

分類Dev

GNU-EFIでプロトコルを機能させるにはどうすればよいですか?

分類Dev

警告:.gnu_debugdataセクションを解析できません。LZMAサポートはコンパイル時に無効にされました

分類Dev

VisualStudioでPCAPプログラムをコンパイルできません

分類Dev

USBからのインストール中にGNU / Linuxインストールプロセスを開始できません

分類Dev

JNIプログラムrJavaをコンパイルできません

分類Dev

単純なRustプログラムをコンパイルできません

分類Dev

基本的なopencvcppプログラムをコンパイルできません

分類Dev

単純なC ++プログラムをコンパイルできません

分類Dev

[F#]; [コンパイルエラー]; F#プログラムをコンパイルできません

分類Dev

GNU C ++は、定数カスタムクラスインスタンスのベクトルを作成できません

分類Dev

GNUパラレルタイムスタンプ出力

分類Dev

GNUパラレルは作業を均等に分割しません

分類Dev

GNUパラレルは作業を均等に分割しません

分類Dev

ハイパータームのコンパイル中に64ビットマシンで32ビットubuntuにgnu / stubs-64.hがありません

分類Dev

GNUのJavaコンパイラ(GCJ)は死んでいますか?

分類Dev

GNUアセンブラをWindowsにコンパイルする

分類Dev

GNU Parallel | パイプコマンド

分類Dev

-std = gnu ++ 11でのCUDA8コンパイルエラー

分類Dev

GNU パラレル bash

分類Dev

ファイルシステムを含むc ++プログラムをコンパイルできません

分類Dev

dotfiles:can / should(?)gnu stowはハードリンクを作成するので、xfce設定のGUIプログラムを引き続き使用できます

Related 関連記事

  1. 1

    CMake:Cコンパイラは単純なテストプログラムをコンパイルできません。驚いたことに、Cコンパイラの識別は不明ですが、CXXはGNU4.9.2です。

  2. 2

    Cプログラムをコンパイルすると、コードブロックで「検索パスに実行可能なコンパイラが見つかりません(GNU GCCコンパイラ)」が表示されます。

  3. 3

    malloc__hooksのGNUサンプルをコンパイルできません

  4. 4

    特定のマクロを展開できません(GNU99コンパイラ)

  5. 5

    プログラムをコンパイルできません

  6. 6

    Haxe 2.09はコンパイルできません["Zebra"、 "Gnu"、 "Elephant"]。map(callback(String.toLowerCase));

  7. 7

    マニュアルを読んでも、Ubuntu GNU / Linuxのtrコマンドで-cパラメーターが何をするのか理解できません

  8. 8

    GNU Emacs23のGDBモードでローカルキーバインディングをカスタマイズできませんでした

  9. 9

    GNU-EFIでプロトコルを機能させるにはどうすればよいですか?

  10. 10

    警告:.gnu_debugdataセクションを解析できません。LZMAサポートはコンパイル時に無効にされました

  11. 11

    VisualStudioでPCAPプログラムをコンパイルできません

  12. 12

    USBからのインストール中にGNU / Linuxインストールプロセスを開始できません

  13. 13

    JNIプログラムrJavaをコンパイルできません

  14. 14

    単純なRustプログラムをコンパイルできません

  15. 15

    基本的なopencvcppプログラムをコンパイルできません

  16. 16

    単純なC ++プログラムをコンパイルできません

  17. 17

    [F#]; [コンパイルエラー]; F#プログラムをコンパイルできません

  18. 18

    GNU C ++は、定数カスタムクラスインスタンスのベクトルを作成できません

  19. 19

    GNUパラレルタイムスタンプ出力

  20. 20

    GNUパラレルは作業を均等に分割しません

  21. 21

    GNUパラレルは作業を均等に分割しません

  22. 22

    ハイパータームのコンパイル中に64ビットマシンで32ビットubuntuにgnu / stubs-64.hがありません

  23. 23

    GNUのJavaコンパイラ(GCJ)は死んでいますか?

  24. 24

    GNUアセンブラをWindowsにコンパイルする

  25. 25

    GNU Parallel | パイプコマンド

  26. 26

    -std = gnu ++ 11でのCUDA8コンパイルエラー

  27. 27

    GNU パラレル bash

  28. 28

    ファイルシステムを含むc ++プログラムをコンパイルできません

  29. 29

    dotfiles:can / should(?)gnu stowはハードリンクを作成するので、xfce設定のGUIプログラムを引き続き使用できます

ホットタグ

アーカイブ