어우 묘하게 많은 패키지를 요구하네

$ sudo apt-get install libpolkit-gobject-1-dev libsystemd-dev doxygen
$ meson setup builddir
$ cd builddir/
$ meson compile
$ meson install

[링크 : https://github.com/LudovicRousseau/PCSC]

[링크 : https://blog.apdu.fr/posts/2024/05/pcsc-lite-now-uses-meson-build-tool/]

    [링크 : https://pcsclite.apdu.fr/]

 

[링크 : https://github.com/FedeDP/Clightd/issues/41] polkit-gobject-1 에러

 

 

meson install 안하면 아래와 같이 so 파일 없다고 에러난다.

$ ./pcsc_demo
PC/SC sample code
V 1.4 2003-2009, Ludovic Rousseau <ludovic.rousseau@free.fr>

THIS PROGRAM IS NOT DESIGNED AS A TESTING TOOL FOR END USERS!
Do NOT use it unless you really know what you do.

loading "libpcsclite_real.so.1" failed: libpcsclite_real.so.1: cannot open shared object file: No such file or directory
SCardEstablishContext: Cannot Connect to Resource Manager 80100001

 

근데 설치하고 나서도 먼가 수행되진 않는다.

 

 

+

아무생각 없이 meson install 했다가 한시간 날림..

pcsc_scan 하면 서비스가 정지되었다는데

$ pcsc_scan 
SCardEstablishContext: Service was stopped.

 

서비스는 돈다. 그런데.. 버전이 맞지 않다고

$ sudo service pcscd status
● pcscd.service - PC/SC Smart Card Daemon
     Loaded: loaded (/lib/systemd/system/pcscd.service; indirect; vendor preset: enabled)
     Active: active (running) since Tue 2025-02-25 16:36:23 KST; 37s ago
TriggeredBy: ● pcscd.socket
       Docs: man:pcscd(8)
   Main PID: 865510 (pcscd)
      Tasks: 6 (limit: 18836)
     Memory: 1.1M
        CPU: 63ms
     CGroup: /system.slice/pcscd.service
             └─865510 /usr/sbin/pcscd --foreground --auto-exit

 2월 25 16:36:23 minimonk systemd[1]: Started PC/SC Smart Card Daemon.
 2월 25 16:36:23 minimonk pcscd[865510]: 00000000 winscard_svc.c:382:ContextThread() Communication protocol mismatch!
 2월 25 16:36:23 minimonk pcscd[865510]: 00000085 winscard_svc.c:384:ContextThread() Client protocol is 4:5
 2월 25 16:36:23 minimonk pcscd[865510]: 00000007 winscard_svc.c:386:ContextThread() Server protocol is 4:4

 

/usr$ sudo find ./ -name libpcsclite*
./share/doc/libpcsclite1
./local/lib/x86_64-linux-gnu/libpcsclite.a
./local/lib/x86_64-linux-gnu/libpcsclite_real.so.1
./local/lib/x86_64-linux-gnu/pkgconfig/libpcsclite.pc
./local/lib/x86_64-linux-gnu/libpcsclite.so.1
./local/lib/x86_64-linux-gnu/libpcsclite_real.so
./local/lib/x86_64-linux-gnu/libpcsclite.so
./lib/x86_64-linux-gnu/libpcsclite.so.1
./lib/x86_64-linux-gnu/libpcsclite.so.1.0.0

 

아마도 so 로더에서 /usr/lib 보다 /usr/local의 우선순위가 높다보니

$ cat /etc/ld.so.conf.d/x86_64-linux-gnu.conf # Multiarch support
/usr/local/lib/x86_64-linux-gnu
/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu

 

apt로 설치되는 녀석은 /usr/lib에 설치되는데 반해

/usr$ ls -al /lib/x86_64-linux-gnu/libpcsclite.so.1*
lrwxrwxrwx 1 root root    20  6월 28  2023 /lib/x86_64-linux-gnu/libpcsclite.so.1 -> libpcsclite.so.1.0.0
-rw-r--r-- 1 root root 43072  6월 28  2023 /lib/x86_64-linux-gnu/libpcsclite.so.1.0.0

 

git으로 소스 빌드해서 설치해버리면 /usr/local/lib에 설치가 되어버리면서

pcsc_scan이 참조하는 라이브러리가 달라져서 발생하는 것으로 추측된다.

/usr/local/lib/x86_64-linux-gnu$ ls -al libpcsc*
-rw-r--r-- 1 root root 185248  2월 25 15:40 libpcsclite.a
lrwxrwxrwx 1 root root     16  2월 25 15:40 libpcsclite.so -> libpcsclite.so.1
-rwxr-xr-x 1 root root  32896  2월 25 15:40 libpcsclite.so.1
lrwxrwxrwx 1 root root     21  2월 25 15:40 libpcsclite_real.so -> libpcsclite_real.so.1
-rwxr-xr-x 1 root root 113936  2월 25 15:40 libpcsclite_real.so.1
lrwxrwxrwx 1 root root     15  2월 25 15:40 libpcscspy.so -> libpcscspy.so.0
-rwxr-xr-x 1 root root  45792  2월 25 15:40 libpcscspy.so.0

[링크 : https://ludovicrousseau.blogspot.com/2023/04/faq-pcsc-lite-and-scardeservicestopped.html]

Posted by 구차니