読者です 読者をやめる 読者になる 読者になる

個人的なまとめ。

てきとーに何か書きます。

hostapd 2.6でpthread(Make編)

hostapdのソースコードを自分で変更してマルチスレッドでhostapdを起動させる必要が出てきた。
恐らく現時点でhostapdはシングルスレッドで動作をしているっぽい。

※ちなみにソースコードを変更したファイルは、hostapd-2.6/hostapd/main.cです

なので、Makeする時に

/usr/bin/ld: main.o: シンボル 'pthread_create@@GLIBC_2.2.5' への未定義参照です
//lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [hostapd] エラー 1
make: *** 未完了のジョブを待っています....

のエラーが吐かれてしまう。
さすがにこの為だけにMakeの勉強をするのは非常に野暮だなぁと思ったので、ひとつずつ片っ端から試してみました。


結果としては、Makefile内の609行目辺りにあるLIBSに-lpthreadを追加する。

 605: ifeq ($(CONFIG_TLS), openssl)
 606: ifdef TLS_FUNCS
 607: OBJS += ../src/crypto/tls_openssl.o
 608: OBJS += ../src/crypto/tls_openssl_ocsp.o
 609: LIBS += -lssl -lpthread
 610: endif

これでmakeする時にエラーが吐かれなくなりました。

自分の場合はmain.cだけを変更したのでMakefileの変更箇所は一箇所で済みましたが、他のファイルを変更する場合はまた別の箇所を変更する必要がありそうです。

Ubuntu 14.04 LTSにhostapdを入れた時に困った事

RaspberryPi3にhostapdを入れてアクセスポイントとして利用してきたが、Ubuntu 14.04 LTSの方にも入れてみようと思った。

基本的に検索をすれば多くのサイトが出てくるので、基本的な所に関しては触れません。
Raspbianの時に特に参考にしたサイトは、こちら。
d.hatena.ne.jp

ただこの通りにUbuntuの方でやってみるとネットワークマネージャーがデバイスを認識しなくなってしまった。

改善策としては、/etc/network/interfacesの中に

up iptables-restore < /etc/iptables.ipv4.nat

を書かなければ、問題なく認識してくれるようになり、hostapdも順調に動いてくれるようになりました。

Ubuntu 16.04 LTSで好きなバージョンのwiresharkを使いたい。

Ubuntu 16.04 LTSで wireshark 1.xを使いたい。
っていうか、好きなバージョンのwiresharkを使いたい。
※もちろん、Ubuntuであればどのバージョンでも動作するはずです。


普通にターミナル上で sudo apt install wiresharkを行うと、wireshark 2.xのバージョンの物がインストールされてしまって、1.xの時と比べGUIが変更されてるので、非常に使いにくい!

と感じたので、ソースコードからビルドする方法を記載する。

続きを読む