web-dev-qa-db-ja.com

P1630のkubuntu13.04(64ビット)のfujitsu-usb-touchscreen: `make`エラー

新しいFujitsuLifeBookP1630にKubuntu13.04(64ビット)をインストールし、いくつかのパッケージを追加しました。

最初にaptitude、次にaptitude update && safe-upgrade、次にxinput-calibrator(システムを再起動するたびに再度実行する必要があることを除いて、動作しているようです)、次にgccmakebuild-essentialcheckinstallbinutils、およびlinux-source

次に、ページからリンクされているファイル cybergene-fujitsu-usb-touchscreen-112fdb75b406.Zip をダウンロードしました https://bitbucket.org/cybergene/fujitsu-usb-touchscreen/overview (とらえどころのないv0.3.9だと思いますが、どこからでもその名前でリンクされているようには見えません);その内容をディレクトリ~/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406に抽出し、makeを実行しようとしました。コンソール(er、Konsole)のトレースは以下のとおりです。

archelon@ingelrayok:~/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406$ make
make -C /lib/modules/3.8.0-30-generic/build M=/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406 modules
make[1]: Entering directory `/usr/src/linux-headers-3.8.0-30-generic'
  CC [M]  /home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.o
/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.c: In function ‘usb_u810_tablet_irq’:
/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.c:133:4: error: implicit declaration of function ‘dbg’ [-Werror=implicit-function-declaration]
/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.c:182:3: error: implicit declaration of function ‘err’ [-Werror=implicit-function-declaration]
/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.c: In function ‘usb_u810_tablet_probe’:
/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.c:246:6: error: called object ‘err’ is not a function
/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.c:253:6: error: called object ‘err’ is not a function
/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.c:263:6: error: called object ‘err’ is not a function
/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.c:270:6: error: called object ‘err’ is not a function
/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.c:277:6: error: called object ‘err’ is not a function
/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.c:302:5: error: called object ‘err’ is not a function
/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.c:358:5: error: called object ‘err’ is not a function
/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.c:366:5: error: called object ‘err’ is not a function
cc1: some warnings being treated as errors
make[2]: *** [/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/fujitsu_usb_touchscreen.o] Error 1
make[1]: *** [_module_/home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.8.0-30-generic'
make: *** [fujitsu_usb_touchscreen.ko] Error 2
archelon@ingelrayok:~/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406$

また、他のコンピューターであるKubuntu12.04を実行しているToshibaSatelliteR10ではmakeがエラーなしで完了することにも注意してください。このマシンには、スタイラス付きの(完全に機能する)タブレットもあります。 (東芝のタブレットは、富士通のUSB抵抗膜方式タッチスクリーンとは対照的に、アクティブデジタイザーを備えたWacomです)。だから、おそらく私はいくつかのパッケージなどを見逃しているだけです---私は何年も何もコンパイルしておらず、特にそれが得意ではありませんでした。たぶんあなたは私を整理することができます。

更新:13.04を12.04 LTSに置き換え、/ homeパーティションを保持すると、パッケージがコンパイルされます。makeはエラーなしで完了します。ただし、make installはそうではありません。 [正確には、checkinstall(またはSudo checkinstall)を実行しました。これはmake installを呼び出します。これは、前者が後者の単純なアップグレードであることがわかるためです(少なくとも私の目的では)、パッケージ管理システムとの統合を提供します。]最初は、次のエラーで失敗しました。

make: execvp: /etc/init.d/fujitsu_touchscreen: Permission denied
make: *** [install] Error 127

調査の結果、影響を受けるファイルでchmod +xを使用してみました。

$ Sudo chmod +x /etc/init.d/fujitsu_touchscreen

Sudo checkinstallを再度実行すると、アクセス許可エラーが解決されたように見えます。再び失敗する前に、それははるかに進んでいきます。 stdoutに出力するために提供するログには、次のようなdpkgエラーが表示されます。

dpkg: error processing /home/archelon/fujitsu-touchscreen-driver/cybergene-fujitsu-usb-touchscreen-112fdb75b406/cybergene-fujitsu-usb-touchscreen-112fdb75b406_AMD64.deb (--install):
 unable to create `/sys/module/fujitsu/usb/touchscreen/parameters/touch_maxy.dpkg-new' (while processing `/sys/module/fujitsu/usb/touchscreen/parameters/touch_maxy'): No such file or directory

そして、確かに、/sys/module/fujitsu_usb_touchscreen/parameters/touch_maxyはありますが、/sys/module/fujitsu/usb/touchscreen/parameters/touch_maxyはありません。どうやら誤植がどこかに導入されたようです。したがって、私はそれを見つけて修正する必要があります。しかし、残念ながら、メイクファイルのinstall;セクション以外の場所を見つけることはほとんどできず、そこにはありません。 (代わりにinstallファイルがあることは理解していますか?しかし、この場合はありません。)...ヘルプ?

(これは完全に別個の問題であるため、別の質問をしました: `make install`は明らかにタイプミスが原因で失敗しますが、makefileでは失敗しません:どのように見つけて修正しますか?

UPDATE 2013-10-18Kubuntu 12.04を再インストールした後、今回は/ homeパーティションを再作成します(これも13.04のインストール中に生成されました)。 )、すぐ上の奇妙なエラーを再現できなくなりました。アンダースコアがスラッシュにどのように変更されたかはまだ知りたいのですが、誰にもわからないようです。このパッケージに対してcheckinstallを正常に実行できていないのに、make installを実行したことにも注意してください。 /etc/init.d/fujitsu_touchscreenの実行とhalのインストールが必要であり、インストールが完了するとすぐにGUIがフリーズし、その後気付いた特別な新機能はなく、システムは再開できなくなります。一時停止から。 Magick Rotation パッケージが私が探していたすべてを提供できるように見えるので、私はその後fujitsu-usb-touchscreenへの興味を失いました。ただし、「すぐに使用できる」機能はありません。 バグレポート を提出しました。これには、発見したエレガントでない回避策も記載されています。

1
Archelon

fujitsu_usb_touchscreen.cは、同封のREADMEファイルが「Fujitsuusbタッチスクリーンカーネルモジュールとユーティリティv0.3.5」を報告しているにもかかわらず、v0.3.9だと言っています。これを言うのは嫌ですが、「私にとってはうまくいきます」:

_wget https://bitbucket.org/cybergene/fujitsu-usb-touchscreen/get/112fdb75b406.Zip
unzip 112fdb75b406.Zip
cd cybergene-fujitsu-usb-touchscreen-112fdb75b406
make
_

3つの可能性:

  1. おそらくZipファイルが壊れていますか?もう一度ダウンロードして、抽出/作成の手順を繰り返してみてください。

  2. 現在のlinux-headersパッケージがインストールされていることを確認してください(これは、linux/kernel.h、linux/slab.h、linux/module.h、linux/init.h、linux/usb /input.hなどに必要です。 )。例:_find /usr/src/ -iname slab.h_

  3. パッケージの作者は、「パッケージのインストールに問題がある場合は、私にメールを送ってください」と言っています。もうやってみましたか?

--beg:edit

私はVirtualBoxゲストでこれをテストしてきました。私が使っていたものは、少し前にkubuntu-13.04-desktop-i386.isoからインストールされたもので、おそらくいくつかの追加のヘッダーがあり、それが幸せでした。

Kubuntu-13.04-desktop-AMD64.isoからクリーンなゲストをインストールしたところ、エラーを再現できました。何が起こっているのかわかりませんが、fujitsu_usb_touchscreen.cでインクルードの直後に次の行を追加すると、エラーなしでコンパイルされます。

_#define dbg(args...) printk(args)
#define err(args...) printk(args)
_

また、usb_u810_tablet_probe()関数は_int err_を定義しますが、これは人間とerr()関数/マクロを混同します。

お役に立てれば!

1
Phoeey