linuxコンパイルエラー
2022-02-27 14:47:47
x86ではできていたのですが、ARMではいろいろと問題があって カーネルコードの準備 の問題、ありますね。 モジュールコード の問題、そして メイクファイル の問題があります。一見、些細な役割でも、うまくいかないと絡まってしまう。
<スパン タイプ1:カーネルコードが準備できていない
- [root@localhost module]# make
- make -C /opt/kangear/kernel/linux-2.6.32.2 M=/root/desktop/kangear/module モジュールを作成します。
- make[1]: ディレクトリ `/opt/kangear/kernel/linux-2.6.32.2' に進入しています。
- ERROR: カーネル構成が無効です。
- include/linux/autoconf.h または include/config/auto.conf が欠落しています。
- カーネルの src で 'make oldconfig && make prepare' を実行すると直ります。
- <スパン
- 警告:シンボルバージョンダンプ /opt/kangear/kernel/linux-2.6.32.2/Module.symvers
- がない場合、モジュールは依存関係と modversions を持ちません。
- モジュールの構築、ステージ2。
- /opt/kangear/kernel/linux-2.6.32.2/scripts/Makefile.modpost:42: include/config/auto.conf: そのようなファイルやディレクトリはありません
- make[2]: *** ターゲット "include/config/auto.conf" を作成するためのルールがありません。 停止しました。
- make[1]: *** [モジュール] エラー 2
- make[1]: ディレクトリ `/opt/kangear/kernel/linux-2.6.32.2' から出る。
- を作ってください。*** [すべて] エラー 2
- [root@localhost module]#
この設定ファイル1つのために、完全なカーネルをコンパイルするのはもったいないです。
- <スパン [root@localhost linux-2.6.32.2]# make zImage
- HOSTLDスクリプト/kconfig/conf
- scripts/kconfig/conf -s arch/arm/Kconfig
- CHK include/linux/version.h
- UPD include/linux/version.h
- include/asm-arm/mach-types.h を生成する。
- CHK include/linux/utsrelease.h
- UPD include/linux/utsrelease.h
- SYMLINK include/asm -> include/asm-arm
- CC kernel/bounds.s
- GEN include/linux/bounds.h
- CC arch/arm/kernel/asm-offsets.s
- GEN include/asm/asm-offsets.h
- CALL scripts/checksyscalls.shを実行します。
- CCスクリプト/mod/empty.o
- HOSTCC スクリプト/mod/mk_elfconfig
- MKELF scripts/mod/elfconfig.h
- HOSTCC scripts/mod/file2alias.o
- HOSTCCスクリプト/mod/modpost.o
- HOSTCC scripts/mod/sumversion.o
- HOSTLD スクリプト/mod/modpost
- HOSTCC スクリプト/kallsyms
- HOSTCCスクリプト/pnmtologo
- HOSTCCスクリプト/conmakehash
- CC init/main.o
- CHK include/linux/compile.h
- UPD include/linux/compile.h
- CC init/version.o
- ^Cmake[1]: *** wait: 子プロセスがありません。 停止しました。
- make[1]: *** 未完成のタスクを待機中 ....
- make[1]: *** wait: 子プロセスがありません。 停止しました。
- を作ってください。*** wait: 子プロセスがありません。 停止します。
- を作成します。*** 未完成のタスクを待機中 ....
- を作ってください。*** wait: 子プロセスがありません。 停止します。
- [root@localhost linux-2.6.32.2]#.
- [root@localhost module]# make
- make -C /opt/kangear/kernel/linux-2.6.32.2 M=/root/desktop/kangear/module モジュールを作成します。
- make[1]: ディレクトリ `/opt/kangear/kernel/linux-2.6.32.2' に進入しています。
- 警告:シンボルバージョンダンプ /opt/kangear/kernel/linux-2.6.32.2/Module.symvers
- がない場合、モジュールは依存関係と modversions を持ちません。
- CC [M] /root/desktop/kangear/module/hello.o
- モジュールの構築、第2段階。
- MODPOST 1モジュール
- 警告: modpost: MODULE_LICENSE() が /root/desktop/kangear/module/hello.o で欠落しています。
- 詳細は include/linux/module.h を参照してください。
- CC /root/desktop/kangear/module/hello.mod.o
- LD [M] /root/desktop/kangear/module/hello.ko
- make[1]: ディレクトリ `/opt/kangear/kernel/linux-2.6.32.2' から出る。
- [root@localhost module]# ls
- hello.c hello.mod.c hello.o modules.order パラメータ
- hello.ko hello.mod.o Makefile Module.symvers シンボル
- [root@localhost module]#
注意すること hello.ko そして出てくるのが
2つ目のエラー:モジュールコードに例外が発生
- [root@localhost hello]# make
- make -C /opt/kangear/kernel/linux-2.6.32.2 M=/opt/kangear/hello モジュールを作成します。
- make[1]: ディレクトリ `/opt/kangear/kernel/linux-2.6.32.2' に進入しています。
- 警告:シンボルバージョンダンプ /opt/kangear/kernel/linux-2.6.32.2/Module.symvers
- がない場合、モジュールは依存関係と modversions を持ちません。
- CC [M] /opt/kangear/hello/hello.o
- /opt/kangear/hello/hello.c:3: error: expect declaration specifiers or '...' before string constant
- /opt/kangear/hello/hello.c:3: 警告: データ定義に型またはストレージクラスがありません。
- /opt/kangear/hello/hello.c:3: 警告: 'MODULE_LECENSE' の宣言で型のデフォルトが 'int' になっています。
- /opt/kangear/hello/hello.c:3: 警告: 関数宣言はプロトタイプではありません。
- /opt/kangear/hello/hello.c:17: エラー: '__inittest' の再定義
- /opt/kangear/hello/hello.c:16: 注意: '__inittest' の以前の定義はここです。
- /opt/kangear/hello/hello.c: 関数 '__inittest' の中です。
- /opt/kangear/hello/hello.c:17: 警告: 互換性のないポインタ型からの戻り値
- /opt/kangear/hello/hello.c: トップレベルでは
- /opt/kangear/hello/hello.c:17: error: 'init_module' の再定義
- /opt/kangear/hello/hello.c:16: 注意: 'init_module' の以前の定義はここです。
- make[2]です。*** [/opt/kangear/hello/hello.o] Error 1
- make[1]です。*** [_module_/opt/kangear/hello] Error 2
- make[1]: ディレクトリ `/opt/kangear/kernel/linux-2.6.32.2' から出る。
- を作成します。*** [デフォルト] エラー 2
- [root@localhost hello]# make
これはほとんどモジュールのコードエラーで、今は中国関連のものが入っていたり、記号があったりします。ブログからコピーしたコードや、win環境でueで編集したコードを、Linuxに直接コピーするとこの問題が発生します。コードを再入力するしかない。適当な方法はまだ見つかっていません。(シンタックスの問題は省きます)
タイプ 3: モジュールの Makefile のシンタックスエラー
- [root@localhost hello]# make
- を作成します。default' に対して何もすることはありません。
- [root@localhost hello]#
x86ではできていたのですが、ARMではいろいろと問題があって カーネルコードの準備 の問題、ありますね。 モジュールコード の問題、そして メイクファイル の問題があります。一見、些細な役割でも、うまくいかないと絡まってしまう。
<スパン タイプ1:カーネルコードが準備できていない
関連
-
gitアップロードファイルのエラーを修正する方法 [rejected] master -> master (fetch first) error: failed to push some refs to '.
-
! 拒否]マスター->マスター(フェッチファースト)問題の解決法
-
DataTableプラグインエラーです。Uncaught TypeError: 未定義のプロパティ 'style' を読み取ることができません。
-
未定義のエラーのプロパティ 'replace' を読み取ることができません。
-
macローカルのgruntプロンプト。致命的なエラーです。ローカルのgruntを見つけることができません。
-
error: 単項「*」の型引数が無効です(「int」を持つ) *__first = __tmp.
-
linux コンパイル (.text+0x20): 'main' への未定義の参照 collect2: error: ld returned 1 | (.text+0x20):undefined reference Scrt1.o
-
python+opencv cv2.VideoCapture は動画の取得に失敗した Solution
-
android.intent.action.MAIN と android.intent.category.LAUNCHER を理解する。
-
Android Studio FAQ -- AndroidManifest.xml のカバレッジに関する問題
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Uncaught TypeError: Node' の 'removeChild' の実行に失敗しました: 1 つの引数が必要ですが、0 つしかありません。
-
fatal: リモートが見つからなかった refs/heads/cm-13.0
-
Python Basics: io.UnsupportedOperation: 読み取れません。
-
警告 基数パラメータradixの欠落:基数パラメータradixの欠落
-
プログラム "g++"がPATHに見つからない
-
Echartsがエラーを発生させる: echarts Uncaught ReferenceError: echarts is not defined
-
C# 指定されたキーが辞書に存在しない。
-
エラーが発生しました。ルールは1つのリソースソースしか持つことができません(提供されたリソースとテスト+インクルード+エクスクルード)。
-
TensorFlowのエラー ValueError: xとyは同じサイズでなければならない
-
アノテーションは使用できません