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の変更箇所は一箇所で済みましたが、他のファイルを変更する場合はまた別の箇所を変更する必要がありそうです。