警告「[something]」にCRCはありません。

警告「[something]」にCRCはありません。

ソースからLinuxカーネルをコンパイルしたい(https://github.com/UDOOboard/linux_kernel)Ubuntu仮想マシンから。

私が実行したとき:

ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- make modules

次のような警告がたくさん表示されます。

WARNING: "do_sync_read" [fs/nfs/nfs.ko] has no CRC!

このモジュールはまだ構築されていません。この問題をどのように解決できますか?

ベストアンサー1

このスレッドは、次のエラーメッセージに関連しているようです。kbuild:偽CRC警告なし:

# 2004/08/15 11:54:27+02:00 sam@xxxxxxxxxxxxxxxxx 
# kbuild: Bogus "has no CRC" in external module builds
# 
# From: Pavel Roskin <proski@xxxxxxx>
# The recent fixes for the external module build have fixed the major
# breakage, but they left one annoyance unfixed. If CONFIG_MODVERSIONS is
# disabled, a warning is printed for every exported symbol that is has no
# CRC. For instance, I see this when compiling the standalone Orinoco
# driver on Linux 2.6.6-rc3:
# 
# *** Warning: "__orinoco_down" [/usr/local/src/orinoco/spectrum_cs.ko] has
# no CRC!
# *** Warning: "hermes_struct_init" [/usr/local/src/orinoco/spectrum_cs.ko]
# has no CRC!
# *** Warning: "free_orinocodev" [/usr/local/src/orinoco/spectrum_cs.ko] has
# no CRC!
# [further warnings skipped]

このスレッドで「CONFIG_MODVERSIONS linux」を検索すると、次のタイトルのページが表示されます。カーネル記号と CONFIG_MODVERSIONS。このページから抜粋:

CONFIG_MODVERSIONS人々の生活をより便利にするために開発された概念です。本質的に達成する目的は、モジュールが存在する場合、そのモジュールのカーネルデータ構造、タイプ、または機能がロードされるとロードに失敗することを認識し、そのモジュールをすべてのカーネルにロードしようとすることです。モジュールの目的が変更されました。

カーネルが使用中でない場合CONFIG_MODVERSIONS有効にすると、そのカーネルバージョン用に特別にコンパイルされたモジュールとMOVERSIONSを有効にすることなく、コンパイルされたモジュールのみをロードできます。

ただし、カーネルが次に構築されている場合CONFIG_MODVERSIONS有効にすると、同じカーネルバージョン用にコンパイルされ、MOVERSIONSがオフになっているモジュールをロードできます。しかし、これが重要な部分です。モジュールが使用するカーネルAPIが変更されない限り、MDOVERSIONSをオンにしてコンパイルされたすべてのモジュールをロードすることもできます。

このページは次のとおりです。

モジュールのシンボルをエクスポートしたくない場合は、次のように使用できます。EXPORT_NO_SYMBOLSマクロ。

私はこのシステムを使って構築します。これは、このシステムから別のシステムにコンパイルされたモジュールをインポートする予定がないと思うからです。

メモ:.configファイルまたは.configファイルでこれを行うことができますmake menuconfig

引用する

おすすめ記事