[北京Xunwei] i.MX6ULLターミネーターLinuxWIFIドライバー実験Wpa_supplicant移植

1つのlibopensslポート

wpa_supplicantはlibopensslに依存しているため、最初にlibopensslを移植する必要があります。まず、openssl-1.1.1-stable-SNAP-20190915.tar.gz圧縮パッケージを取得し、Ubuntuシステムにコピーして解凍し、openssl-1.1.1を取得します。 -stable-SNAP- 20190915フォルダーを作成し、「libopenssl」という名前の新しいフォルダーを作成して、libopensslのコンパイル結果を保存します。解凍したopenssl-1.1.1-stable-SNAP-20190915ディレクトリに入り、次のコマンドを実行して設定します。
./config shared no-asm --prefix=/home/topeet/tool/libopenssl/
設定が成功したら、Makefileが生成され、Makefileを開いて、「-m64」を含むすべてのコンテンツを検索します。 "。2つの場所があります。変数CNF_CFLAGSとCNF_CXXFLAGSの場合、変更後の図1.1に示すように、これら2つの変数の" -m64 "を削除します。
ここに画像の説明を挿入

図1.1

Makefileを変更した後、次のコマンドを使用してlibopensslをコンパイルおよびインストールします。

make CROSS_COMPILE=arm-linux-gnueabihf- -j4
make install

コンパイルとインストールが完了すると、図1.2に示すようにlibopensslディレクトリにコンテンツがあります。
ここに画像の説明を挿入

図1.2

libディレクトリが必要です。libディレクトリ内のすべてのファイルを、開発ボードのルートファイルシステムの/ usr / libディレクトリにコピーします。USBフラッシュドライブを使用してファイルをコピーする場合、「シンボリックリンクを作成できない」場合があります。このようなファイルは、libディレクトリでtar.gz形式の圧縮パッケージにパッケージ化してから、ルートファイルシステムにコピーして、内容の下で/ usr / libに解凍されます。次のコマンドを実行します。

cd /home/topeet/tool/libopenssl/lib/   		//进入lib目录下
tar -czvf lib.tar.gz *							//打包当前目录下的文件生成lib.tar.gz

次に、Uディスクを介してルートファイルシステムにコピーし、/ usr / libディレクトリに解凍します。

mount /dev/sda1 /mnt 				//挂载U盘到mnt目录下
tar -xvf /mnt/lib.tar.gz -C /usr/lib		//直接解压lib.tar.gz到/usr/lib目录下

「-C」は、解凍されたディレクトリを指定します。

2libnlライブラリの移植

wpa_supplicantもlibnlに依存しているため、libnlライブラリを移行し、libnl-3.2.23.tar.gz圧縮パッケージを取得してから、Ubuntuシステムにコピーし、解凍してlibnl-3.2.23フォルダーを取得する必要があります。次に、新しい名前を作成します。「libnl」という名前のフォルダーは、libnlのコンパイル結果を保存するために使用されます。libnl-3.2.23フォルダーに入り、次のコマンドを実行して構成します。
./configure --host=arm-linux-gnueabihf --prefix=/home/topeet/tool/libnl/
-hostはクロスコンパイラーのプレフィックスを指定するために使用されます。ここでは「arm-linux-gnueabihf」に設定されます。-prefixは次の目的で使用されます。コンパイル結果が保存されるディレクトリを指定します。これは、先ほど作成したlibnlフォルダに設定されます。構成が完了したら、次のコマンドを実行して、libnlライブラリをコンパイルおよびインストールできます。

make -j12
make install

コンパイルおよびインストール後のlibnlディレクトリは、図2.1のようになります。
ここに画像の説明を挿入

図2.1

libnlファイルの下にあるlibライブラリファイルを使用する必要があります。libの下にあるライブラリファイルを、Uディスクを介して/ usr / libディレクトリにコピーします。

3wpa_supplicantの移行

次に、wpa_supplicantを移植し、wpa_supplicantソースパッケージwpa_supplicant-2.7.ta​​r.gzを取得し、Ubuntuシステムにコピーして解凍し、wpa_supplicant-2.7フォルダーを取得し、図3.1に示すようにwpa_supplicant-2.7ディレクトリに入ります。
ここに画像の説明を挿入

図3.1

図にwpa_supplicantディレクトリを入力し、設定します。wpa_supplicantの設定は特別です。wpa_supplicantの下にあるdefconfigファイルをコピーして、名前を.configに変更する必要があります。コマンドは次のとおりです。

cd wpa_supplicant/ 
cp defconfig .config

完了後、.configファイルを開き、クロスコンパイラ、openssl、libnlライブラリ、およびヘッダーファイルのパスを指定して、次のように設定します。

 49 CC = arm-linux-gnueabihf-gcc
    /* openssl 库文件和头文件路径*/
 50 CFLAGS += -I/home/topeet/tool/libopenssl/include
 51 LIBS += -L/home/topeet/tool/libopenssl/lib -lssl -lcrypto
 52  /*libnl库文件和头文件路径*/
 53 CFLAGS += -I/home/topeet/tool/libnl/include/libnl3
 54 LIBS += -L/home/topeet/tool/libnl/lib

CC変数はクロスコンパイラを指定するために使用されます。ここではarm-linux-gnueabihf-gccであり、CFLAGSは使用されるライブラリヘッダーファイルのパスを指定し、LIBSは使用されるライブラリのパスを指定します。wap_supplicantをコンパイルするにはopensslライブラリとlibnlライブラリが必要であるため、これら2つのライブラリパスとヘッダーファイルパスがコードで指定されています。.configの上記の内容を図3.2に示します。
ここに画像の説明を挿入

図3.2

.configファイルを変更した後、wap_supplicantをコンパイルできます。次のコマンドを使用して、wap_supplicantディレクトリでコンパイルします。

export PKG_CONFIG_PATH=/home/topeet/tool/libnl/lib/pkgconfig:$PKG_CONFIG_PATH
make

まず、exportを使用してlibnlライブラリのpkgconfigパスを指定し、環境変数PKG_CONFIG_PATHがpkgconfigパッケージパスを保持します。図3.3に示すように、tool / libnl / lib /の下に「pkgconfig」という名前のディレクトリがあります。
ここに画像の説明を挿入

図3.3

wpa_supplicantをコンパイルするときは、libnlのpkgconfigパスを指定する必要があります。そうしないと、「libnl-3.0」または「libnl-3.0.pc」が見つかりませんというエラーが表示されます。コンパイルが完了すると、図3.4に示すように、2つのコマンドwpa_supplicantとwpa_cliがこのディレクトリに生成されます。
ここに画像の説明を挿入

図3.4

開発ボードルートファイルシステムのの/ usr / binディレクトリにコンパイルwpa_cliとwpa_supplicantのファイルをコピーし、コピーが完了したら、あなたはこれらの2つのコマンドが使用できるかどうかをテストすることができターミナルで次のコマンドを入力します。。
wpa_supplicantの-v
上記のコマンドは、wpa_supplicantのが正常に動作する場合は、図3.5に示すように、それは、バージョン番号を出力します、wpa_supplicantのバージョン番号を確認してください。
ここに画像の説明を挿入

図3.5

wpa_supplicantのバージョン番号が正常に出力され、wpa_supplicantの移行が成功したことがわかります。次のステップは、wpa_supplicantを使用して開発ボードのWIFIをホットスポットにリンクし、WIFIインターネットアクセス機能を実現することです。

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/BeiJingXunWei/article/details/112917025