YuvalNirkin / face_swap

End-to-end, automatic face swapping pipeline
GNU General Public License v3.0
825 stars 203 forks source link

protobuf version conflict #4

Closed czastack closed 7 years ago

czastack commented 7 years ago

When I build finish and run face_swap_image --cfg test.cfg I got this error as bellow. [libprotobuf FATAL google/protobuf/stubs/common.cc:78] This program was compiled against version 2.6.1 of the Protocol Buffer runtime library, which is not compatible with the installed version (3.3.0). Contact the program author for an update. If you compiled the program yourself, make sure that your headers are from the same version of Protocol Buffers as your link-time library. (Version verification failed in "/build/mir-pkdHET/mir-0.21.0+16.04.20160330/obj-x86_64-linux-gnu/src/protobuf/mir_protobuf.pb.cc".) This program was compiled against version 2.6.1 of the Protocol Buffer runtime library, which is not compatible with the installed version (3.3.0). Contact the program author for an update. If you compiled the program yourself, make sure that your headers are from the same version of Protocol Buffers as your link-time library. (Version verification failed in "/build/mir-pkdHET/mir-0.21.0+16.04.20160330/obj-x86_64-linux-gnu/src/protobuf/mir_protobuf.pb.cc".)

I have remove the libprotobuf-dev and protobuf-compiler from system and rebuild all the dependencies. But it is the same. Can you give me some advice?

YuvalNirkin commented 7 years ago

It seems you still have some residue of the previous version of protobuf. I would try to do the following:

Good luck!

czastack commented 7 years ago

When I delete libprotobuf.so.9 and libprotobuf-lite.so.9, the ubuntu desktop crash. In addition, there is no protobuf 2 installed. And I don't know how to onfigure Caffe and OpenCV to use latest protobuf. The opencv-3.2.0 use the protobuf-3.1.0 from source.

czastack commented 7 years ago

I found this in internet.

The Mir version in any Ubuntu archive is built with the protobuf version in the archive. The version of protobuf in the Ubuntu 16.04 archive is 2.6.1.

The simplest option is to use libprotobuf-dev as supplied in the archive. If you need to use a more recent version, then you'll need to rebuild any packages that use it, including Mir.

Using a different archive won't help: Even the current 17.04 release only has 3.0.0 of protobuf.

I don't know how to do now.

YuvalNirkin commented 7 years ago

Use CMake to configure the libraries to use the right version of protobuf. The cmake-gui application is especially useful for that.

You can install any version of protobuf you want, the Linux version doesn't matter. Just specify a different install directory instead of the default one.

halfkai commented 7 years ago

same problem as well… and I did using cmake build and install in order... still failed :(

YuvalNirkin commented 7 years ago

There is no way for me to reproduce this problem :( If you get a runtime error as mentioned in the first comment, you can try setting the LD_LIBRARY_PATH environment variable with the path to the right protobuf version.

YuvalNirkin commented 7 years ago

I am closing this issue. Feel free to open it again if you still have problems with this.