Skip to content

Instantly share code, notes, and snippets.

@trickart
Last active May 6, 2021 13:10
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save trickart/88b7b3b868ddce2b4031 to your computer and use it in GitHub Desktop.
Save trickart/88b7b3b868ddce2b4031 to your computer and use it in GitHub Desktop.
SoftCASとwpa supplicantを併用する

LinuxでSoftCASとwpa supplicantを併用する

参考 https://gist.github.com/tyage/3d201580549bc84e24cd

LinuxでSoftCASを使う方法が公開されていたがlibpcscliteを書き換えるのでwpa supplicantと併用できない。恐らくwpa supplicantはWiFiだけでなくSIMカードを使った通信も制御していてpcscliteが必要なのだと思われる。
今回は併用することを目指す。

なおlibyakisobaというものもあるらしいが詳細不明。恐らくやりたいことは同じだと思われる

ざっくりとした説明 リネームした改変版libpcsclite.so.1.0.0と対応した.pcをインストールし、libarib25でlibpcscliteでなくそちらを指定する

1,上記URLを参考にして改変版libpcsclite.so.1.0.0をビルドする。

2,ビルド作業中に改変した/usr/include/PCSC/pcsclite.hを元に戻す
 libarib25でも使うため

3,リネームしインストールする
 パスはマシンによって違う。findでlibpcsclite.soがインストールされているところを見つけておく。
 今回はRaspberry Piのパスで進める。名前は任意。

% sudo cp libpcsclite.so.1.0.0 /usr/lib/arm-linux-gnueabihf/libpcsckai.so.1.0.0

4,pcファイルを作成する
 libpcsclite.pcを参考にして作成する

% cd /usr/lib/arm-linux-gnueabihf/pkgconfig
% sudo cp libpcsclite.pc libpcscka.pc
% sudoedit libpcsckai.pc

10行目の

Libs: -L${libdir} -lpcsclite

Libs: -L${libdir} -lpcsckai

とする。

5,libarib25のMakefileを編集する

% cd path/to/libarib25/src
% editor Makefile

10,11行目の

PCSC_CFLAGS ?= `pkg-config libpcsclite --cflags`
PCSC_LDLIBS ?= `pkg-config libpcsclite --libs`

PCSC_CFLAGS ?= `pkg-config libpcsckai --cflags`
PCSC_LDLIBS ?= `pkg-config libpcsckai --libs`

とする。

6,ビルドしてリンクされているか確認する

% cd ..
% make
% ldd src/libarib25.so
	/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so (0xb6fa4000)
	libpcsckai.so => /usr/lib/arm-linux-gnueabihf/libpcsckai.so (0xb6f8c000)
	libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0xb6ebf000)
	libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xb6e4e000)
	libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xb6e26000)
	libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6cf6000)
	/lib/ld-linux-armhf.so.3 (0xb6fc1000)
prefix=/usr
exec_prefix=${prefix}
libdir=${prefix}/lib/arm-linux-gnueabihf
includedir=${prefix}/include/PCSC
usbdropdir=/usr/lib/pcsc/drivers
Name: PCSC Lite
Description: PC/SC smart card interface
Version: 1.8.4
Libs: -L${libdir} -lpcsckai
Libs.private:
Cflags: -I${includedir} -pthread
PREFIX = /usr/local
MAJOR = 0
MINOR = 2
REVISION = 5
VER = $(MAJOR).$(MINOR).$(REVISION)
DEST_HEADER = $(PREFIX)/include/arib25
# PC/SC Lite libraries and headers.
PCSC_CFLAGS ?= `pkg-config libpcsckai --cflags`
PCSC_LDLIBS ?= `pkg-config libpcsckai --libs`
CC = gcc
CXX = g++
CFLAGS = -O2 -g -fPIC -Wall $(PCSC_CFLAGS) -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
LIBS = $(PCSC_LDLIBS) -lm
LDFLAGS =
OBJS = arib_std_b25.o b_cas_card.o multi2.o ts_section_parser.o
HEADERS = arib_std_b25.h b_cas_card.h portable.h
TARGET_APP = b25
TARGET_LIB = libarib25.so
TARGETS = $(TARGET_APP) $(TARGET_LIB)
DEPEND = Makefile.dep
SONAME = $(TARGET_LIB).$(MAJOR)
all: $(TARGETS)
clean:
rm -f $(OBJS) td.o $(TARGETS) $(DEPEND)
$(TARGET_APP): $(OBJS) td.o
$(CXX) $(LDFLAGS) -o $(TARGET_APP) $(OBJS) td.o $(LIBS)
$(TARGET_LIB): $(OBJS)
$(CXX) $(LDFLAGS) -shared -o $(TARGET_LIB) $(OBJS) $(LIBS) -Wl,-soname,$(SONAME)
$(DEPEND):
$(CC) -fPIC -MM $(OBJS:.o=.c) td.c > $@
install: $(TARGET) install-headers
install -m755 b25 $(PREFIX)/bin
install -m755 $(TARGET_LIB) $(PREFIX)/lib/$(TARGET_LIB).$(VER)
ln -sf $(PREFIX)/lib/$(TARGET_LIB).$(VER) $(PREFIX)/lib/$(TARGET_LIB).$(MAJOR)
ln -sf $(PREFIX)/lib/$(TARGET_LIB).$(MAJOR) $(PREFIX)/lib/$(TARGET_LIB)
ldconfig
install-headers:
mkdir -p $(DEST_HEADER)
install -m644 $(HEADERS) $(DEST_HEADER)
-include $(DEPEND)
@wanwanco
Copy link

下記の部分ですが、間違っていませんか?
sudo cp libpcsclite.pc libpcscka.pc
% sudoedit libpcsckai.pc

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment