2013-03-11 5 views
5

私はアンドロイド4.1デバイスにiwワイヤレスパッケージをインストールする必要があります。しかし、私はどのようにインストールするパッケージの必要なバージョンは何かを知らない!アンドロイド4.1デバイスの "iw"をコンパイルしてビルドしますか?

また、これを行うにはLinuxプラットフォームが必要ですか、それを構築してアンドロイドルーティングデバイス用のadbシェルにインストールするだけで十分です。

私はこれを参照してください linkしかし、私はadb端末から私はそのgitといくつかのシェルが見つかりませんを参照してください???どうやってするの ?

誰も考えていないようですね??

+0

そのページでバイナリを試しましたか?あなたはそれをデバイス自体からコンパイルしたい場合、それはもっと難しくなります。確かにgitはデフォルトではインストールされません。 – kabuko

+0

@kabukoバイナリで何を意味していますか?もし私が端末上でubuntuを動作させようとすると、アンドロイドsdkをインストールする必要がありますが、ubuntuマシンでのみコンパイルすれば、デバイスはどのようにこの機能をサポートしますか? android sdk? – Hana90

答えて

1

バージョン3.11のiw(Android.mkファイルがすでに作成されています)をビルドしているときに、ヘッダーとライブラリが見つからないためにいくつかの問題が発生しました。 Android.mkファイルを持っているので、NDKを使うことができます。以下において

私は次のことを仮定します:

  • デバイスイメージは、(カーネルヘッダとlibnl-2静的ライブラリは、少なくとも利用可能であるべきである)の前に構築されています。私はi9300のためにCyanogenMod 10(カーネル3.0.somethingで)を構築し、それを反映するために以下のパスを更新します。
  • NDKは~/android/system/ndkにインストールされています。
  • NDKには、適切なプラットフォームとツールチェーンがインストールされています。 iw-3.11.tar.xzを抽出し、その中に自分のディレクトリを変更した後

準備:

ln -s . jni 
ln -nsv ~/android/system/external ./ 

次の問題は、ネットリンクライブラリです:単純に他のヘッダひどくandroid/system/out/target/product/i9300/obj/KERNEL_OBJ/usr/include/linuxブレイクへのリンクを作成

In file included from external/libnl-headers/netlink/genl/genl.h:15:0, 
       from /tmp/and/iw/jni/iw.c:17: 
external/libnl-headers/netlink/netlink.h:27:29: fatal error: linux/genetlink.h: No such file or directory. 

次のようなエラーが発生します。

Compile thumb : iw <= iw.c 
In file included from /home/user/android/system/ndk/platforms/android-14/arch-arm/usr/include/net/if.h:28:0, 
       from /tmp/and/iw/jni/iw.c:10: 
/tmp/and/iw/jni/linux/if.h:178:19: error: field 'ifru_addr' has incomplete type 
/tmp/and/iw/jni/linux/if.h:179:19: error: field 'ifru_dstaddr' has incomplete type 
/tmp/and/iw/jni/linux/if.h:180:19: error: field 'ifru_broadaddr' has incomplete type 
/tmp/and/iw/jni/linux/if.h:181:19: error: field 'ifru_netmask' has incomplete type 
/tmp/and/iw/jni/linux/if.h:182:20: error: field 'ifru_hwaddr' has incomplete type 
In file included from external/libnl-headers/netlink/netlink.h:20:0, 
       from external/libnl-headers/netlink/genl/genl.h:15, 
       from /tmp/and/iw/jni/iw.c:17: 
/home/user/android/system/ndk/platforms/android-14/arch-arm/usr/include/sys/socket.h:74:44: warning: 'struct msghdr' declared inside parameter list [enabled by default] 
/home/user/android/system/ndk/platforms/android-14/arch-arm/usr/include/sys/socket.h:74:44: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default] 
/home/user/android/system/ndk/platforms/android-14/arch-arm/usr/include/sys/socket.h:75:38: warning: 'struct msghdr' declared inside parameter list [enabled by default] 
In file included from external/libnl-headers/netlink/netlink.h:25:0, 
       from external/libnl-headers/netlink/genl/genl.h:15, 
       from /tmp/and/iw/jni/iw.c:17: 
/tmp/and/iw/jni/linux/netlink.h:33:2: error: unknown type name 'sa_family_t' 
In file included from external/libnl-headers/netlink/genl/genl.h:15:0, 
       from /tmp/and/iw/jni/iw.c:17: 
external/libnl-headers/netlink/netlink.h:51:16: warning: 'struct msghdr' declared inside parameter list [enabled by default] 
external/libnl-headers/netlink/netlink.h:54:19: warning: 'struct iovec' declared inside parameter list [enabled by default] 
make: *** [/tmp/and/iw/obj/local/armeabi/objs/iw/iw.o] Error 1 

この問題を回避するには、linuxディレクトリを作成し、それに~/android/system/out/target/product/i9300/obj/KERNEL_OBJ/usr/include/linux/genetlink.hへのシンボリックリンクを置くことです:

mkdir -p linux 
ln -svn ~/android/system/out/target/product/i9300/obj/KERNEL_OBJ/usr/include/linux/genetlink.h linux/ 

最後にネットリンクライブラリにリンクして終了するAndroid.mkをパッチ:

sed "/LOCAL_LDFLAGS/s#\$# -L$HOME/android/system/out/target/product/i9300/obj/STATIC_LIBRARIES/libnl_2_intermediates -lnl_2#" -i Android.mk 

今ビルドが可能開始日:

NDK_PROJECT_PATH=$PWD ~/android/system/ndk/ndk-build TARGET_PLATFORM=android-14 

netlink /genl/genl.hは見つかりませんが、iw バイナリはlibs/armeabiで利用可能です!

+0

FYIはgenetlink.hを必要としています...何らかの理由でNDK R10eのように、APIレベル21のGNU STLで利用可能です。私はAPIレベル17のバージョンを使用していたので、私はそれを他のものから私のインストールにコピーしました。 – dadude999

関連する問題