albfan / miraclecast

Connect external monitors to your system via Wifi-Display specification also known as Miracast
Other
3.84k stars 414 forks source link

Getting Version 'LIBSYSTEMD_FUTURE' ERROR #68

Closed bpipi closed 8 years ago

bpipi commented 8 years ago

Hi all,

I am trying the miraclecast with Rpi. I have followed the given steps. I got passed results with the test scripts present in the res folder. I have successfully compiled and installed. But when I am trying to launch wifi-daemon I am getting following error...

     miracle-wifid: /lib/arm-linux-gnueabihf/libsystemd.so.0: version 'LIBSYSTEMD_FUTURE' not found      (required by miracle-wifid) 

Could you please help with this?

Thanks

albfan commented 8 years ago

Please provide more details on your system.

It should be easy to detect problem with that

bpipi commented 8 years ago

OS and version - Raspbian GNU/Linux 8.0 Jessie Systemd version - 215 I have build the systemd-220 but when I give systemd --version it is showing systemd 215.

Thanks

albfan commented 8 years ago

Did you install your systemd-220 compilation ´sudo make install´? maybe that's the problem.

systemctl --version must say 220

See there's a 219 branch on miraclecast with interfaces compatible with systemd <=219, but as you need to enable kdbus, focus on correctly install systemd

bpipi commented 8 years ago

Yes systemctl --version is giving systemd 220. Just now I have checked.

root@raspberrypi:/home/pi/systemd-220# systemd --version systemd 215 +PAM +AUDIT +SELINUX +IMA +SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ -SECCOMP -APPARMOR root@raspberrypi:/home/pi/systemd-220# systemctl --version systemd 220 +PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT -GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID -ELFUTILS +KMOD -IDN root@raspberrypi:/home/pi/systemd-220#

albfan commented 8 years ago

Please provide details on sources and compilation for systemd 220. I will update docs for raspbian users if we can solve this.

bpipi commented 8 years ago

I have followed following procedure

For hardware test scripts http://www.rpiblog.com/2012/12/turn-raspberry-pi-into-wireless-access.html

For systemd I have downloaded the systemd-220.tar.xz from https://www.freedesktop.org/software/systemd/

For compiling I have used normal steps ./configure --enable-kdbus make && make install

bpipi commented 8 years ago

Hi albfan, Did you find anything about this error? Or am I doing something wrong in the building process?

Thanks

albfan commented 8 years ago

As you open another issues executing miracle-wifid, I guess you bypass this problem. Anyway...

I use this git alias to find strings on a project over time

https://github.com/albfan/dotfiles/blob/master/gitconfig#L29

   find = "!git log --color -p -S "

Issuing

$ git find LIBSYSTEMD_FUTURE -M

on systemd repo, you will find it was added on version 213 of systemd,

https://github.com/systemd/systemd/commit/42a04ee#diff-6efbfb51f689c4bd6084d7ce8892c748R152

and removed on version 220.

https://github.com/systemd/systemd/commit/73a7e4615dd56b69ab6cf5810806b50fed28e9e7#diff-3394b6af05d809b5790a0ddb797a0bbbL464

So, based on your description, I guess miraclecast was compiled against systemd 215 and now it is running against 220 and lacks that symbol.

You can confirm like this:

$ ldd $(which miracle-wifid)
linux-vdso.so.1 (0x00007ffcf17c4000)
libudev.so.1 => /usr/lib/libudev.so.1 (0x00007f32a9c8b000)
libsystemd.so.0 => /usr/lib/libsystemd.so.0 (0x00007f32a9c05000)
librt.so.1 => /usr/lib/librt.so.1 (0x00007f32a98d4000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f32a96b7000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f32a9316000)
libcap.so.2 => /usr/lib/libcap.so.2 (0x00007f32a9112000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007f32a8e0d000)
libresolv.so.2 => /usr/lib/libresolv.so.2 (0x00007f32a8bf6000)
/lib64/ld-linux-x86-64.so.2 (0x00007f32a9adc000)
liblzma.so.5 => /usr/lib/liblzma.so.5 (0x00007f32a89d0000)
liblz4.so.1 => /usr/lib/liblz4.so.1 (0x00007f32a87be000)
libgcrypt.so.20 => /usr/lib/libgcrypt.so.20 (0x00007f32a84dc000)
libgpg-error.so.0 => /usr/lib/libgpg-error.so.0 (0x00007f32a82c8000)

Then search for symbols on systemd lib

$ readelf -Ws /usr/lib/libsystemd.so | grep ABS 280: 0000000000085080 0 NOTYPE GLOBAL DEFAULT ABS _end 353: 00000000000845e0 0 NOTYPE GLOBAL DEFAULT ABS _edata 451: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS LIBSYSTEMD_209 498: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS LIBSYSTEMD_211 504: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS LIBSYSTEMD_213 508: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS LIBSYSTEMD_214 512: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS LIBSYSTEMD_216 514: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS LIBSYSTEMD_217 519: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS LIBSYSTEMD_219 529: 00000000000845e0 0 NOTYPE GLOBAL DEFAULT ABS __bss_start 562: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS LIBSYSTEMD_220 564: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS LIBSYSTEMD_221 565: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS LIBSYSTEMD_222 571: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS LIBSYSTEMD_226 573: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS LIBSYSTEMD_227 577: 0000000000000000 0 OBJECT GLOBAL DEFAULT ABS LIBSYSTEMD_229

If you do not restart system after compile systemd things like that can happen. Normally

$ sudo ldconfig

can help.

Close this issue if any of that solves your problem

bpipi commented 8 years ago

I have tried all the above commands but still the same error. But other than raspberry pi boards, all other boards are working without this error.On Rpi only I am getting this error.

bpipi commented 8 years ago

Please open this issue. As I have not closed I cant open this issue.

albfan commented 8 years ago

Before reopen please post here results of:

$ ldd $(which miracle-wifid)
$ readelf -Ws /usr/lib/libsystemd.so | grep ABS

That's only to detect problem not to solve it. Once posted I can tell you what to do next

bpipi commented 8 years ago

I am posting the ldd output is ldd.log and readelf output is readelf.log

ldd.txt readelf.txt

albfan commented 8 years ago

Seems you check different libs. Add command line execution. That's the key.

With first command you get the libsystemd location (/lib/arm-linux-gnueabihf/libsystemd.so.0) so second command should be:

$ readelf -Ws /lib/arm-linux-gnueabihf/libsystemd.so.0 | grep ABS

Was that your command? or Did you use my example command (/usr/lib/libsystemd.so)?

bpipi commented 8 years ago

Sorry I had used your command. Now When I used following command I got the following output.

$ readelf -Ws /lib/arm-linux-gnueabihf/libsystemd.so.0 | grep ABS
134: 00000000 0 OBJECT GLOBAL DEFAULT ABS LIBSYSTEMD_211
135: 00000000 0 OBJECT GLOBAL DEFAULT ABS LIBSYSTEMD_213
137: 00000000 0 OBJECT GLOBAL DEFAULT ABS LIBSYSTEMD_214
218: 00000000 0 OBJECT GLOBAL DEFAULT ABS LIBSYSTEMD_209
albfan commented 8 years ago

Here you are. You have to versions installed of systemd. That's why I close this issue.

Old one version is discovered first by gcc, so miraclecast is compiled against it. Only at runtime it fails. If you remove old systemd installation and recompile all should work.

bpipi commented 8 years ago

How come two systemd? Total 4 systemd's are showing when I execute the above command.

albfan commented 8 years ago

Four systemd? That's only symbols added on sucessive releases of systemd

systemd/systemd@42a04ee#diff-6efbfb51f689c4bd6084d7ce8892c748R152

I guess you install systemd from source, there's no step on compile and install a program which removes old version of that package. That's competence of package managers.

That's why I encourage to use them for install systemd. pacman and apt-get will inform about conflict and remove old package before install.