hajime_ishitani
2018年9月19日 20時39分
お世話になります。
石谷と申します。
Armadillo-IoT G3にLoRaアドオンモジュールを接続するためにカーネルの
再コンパイルを試行しているところで配布カーネルでコンパイルエラーが
出ます。
いちおう自己解決しましたがFAQになると思いましたので投稿させて頂きます。
下記の開発ツールとカーネルをダウンロードして、何も触らずカーネル単体
でコンパイルをすると最後のリンカーでエラーが出てカーネルの生成に失敗します。
1.開発ツール
開発環境 ATDE7 (VMware仮想イメージファイル)
Armadilloシリーズ専用の開発環境(Debian GNU/Linux 9 (“stretch”) ベース)
2.Linuxカーネル
Armadillo-IoTゲートウェイ G3 製品ソフトウェア (Linux 4.9)
標準製品のイメージファイルとソースコード (最新版)
linux-4.9-x1-at2.tar.gz
Windows7上にVMWareをインストールしATDE7を起動させ
Linuxソースを /usr/src/linux に展開
●やってみたこと
make menuconfig で一旦画面を見て何も触らず終了し
make clean; make -r でコンパイルスタートし数時間後に下記エラーで止まります。
-----ここから-----
LD virt/lib/built-in.o
CC [M] virt/lib/irqbypass.o
LD virt/built-in.o
LD vmlinux.o
MODPOST vmlinux.o
GEN .version
CHK include/generated/compile.h
UPD include/generated/compile.h
CC init/version.o
LD init/built-in.o
drivers/built-in.o: 関数 `mma8451_probe' 内:
/usr/src/linux/drivers/hwmon/mxc_mma8451.c:471: `input_allocate_polled_device' に対する定義されていない参照です
/usr/src/linux/drivers/hwmon/mxc_mma8451.c:490: `input_register_polled_device' に対する定義されていない参照です
/usr/src/linux/drivers/hwmon/mxc_mma8451.c:509: `input_free_polled_device' に対する定義されていない参照です
Makefile:987: ターゲット 'vmlinux' のレシピで失敗しました
make: *** [vmlinux] エラー 1
root@atde7:/usr/src/linux#
-----ここまで-----
●下記のKconfigとmxc_mma8451.cを修正することで問題無くコンパイルが完了しました。
-----ここから-----
linux-4.9-x1-at2/drivers/hwmon/Kconfig
config MXC_MMA8451
tristate "MMA8451 device driver"
depends on I2C
depends on INPUT && INPUT_POLLDEV ★追記
default y
-----ここまで-----
-----ここから-----
linux-4.9-x1-at2/drivers/hwmon/mxc_mma8451.c
557行目
static const struct i2c_device_id mma8451_id[] = {
{"mma8451", 0},
{ } ★追記
};
-----ここまで-----
他の開発環境ではエラーになってないのかは検証しておりません。
以上ご報告まで
コメント
y.nakamura
中村です。
> アットマークテクノ殿よりDLした下記カーネルソースですが
> linux-4.9-x1-at2.tar.gz
>
> は元々の .config はx86用になっている様です。
> ですので「素」のままコンパイルするとx86のカーネルが出来上がってしまいます。
>
> ARM 用にコンパイルするためにArmadillo-IoT G3 の /proc/config.gz を取ってきて
> 展開し、make menuconfig で load してみましたが processor で ARM が選択出来ず
> 生成された .config も x86 用となり目的の物をコンパイルする迄に至っておりません。
>
> 何か勘違い等があるのであればご教示頂きたくお願いします。
マニュアルを読んでますか?
最初の投稿で、
>> ●やってみたこと
>> make menuconfig で一旦画面を見て何も触らず終了し
>>
>> make clean; make -r
>> でコンパイルスタートし数時間後に下記エラーで止まります。
と書かれていますけど、
[10.2. Linuxカーネルをビルドする]
https://manual.atmark-techno.com/armadillo-iot-g3/armadillo-iotg-g3_pro…
を読んで、このとおりにやってみてください。
--
なかむら
hajime_ishitani
hajime_ishitani
2018年9月19日 22時26分
お世話になります。
石谷と申します。
すみません少し勘違いしていた見たいですので追記です。
アットマークテクノ殿よりDLした下記カーネルソースですが
linux-4.9-x1-at2.tar.gz
は元々の .config はx86用になっている様です。
ですので「素」のままコンパイルするとx86のカーネルが出来上がってしまいます。
ARM 用にコンパイルするためにArmadillo-IoT G3 の /proc/config.gz を取ってきて
展開し、make menuconfig で load してみましたが processor で ARM が選択出来ず
生成された .config も x86 用となり目的の物をコンパイルする迄に至っておりません。
何か勘違い等があるのであればご教示頂きたくお願いします。