VeridisBiometricSDK_5.0_Linux 示例中的编译错误:MatchingExample

compile error in VeridisBiometricSDK_5.0_Linux sample: MatchingExample

我尝试使用 VeridisBiometricSDK_5.0_Linux,这是一个免费的生物识别库,其中包含我厌倦了通过完全按照自述文件所述来编译 MatchingExample 的示例: 让 MatchingExample.cpp 但我有这个错误结果:

root@localhost MatchingExample]# make MatchingExample
g++ -Wall -g  MatchingExample.cpp -o ../../../bin/MatchingExample -I../../../include/ -L../../../lib/   -lVrBio -lpthread -ludev -lusb -lusb-1.0 -ldl
MatchingExample.cpp: In function ‘int main()’:
MatchingExample.cpp:47: warning: deprecated conversion from string constant to ‘char*’
MatchingExample.cpp:55: warning: deprecated conversion from string constant to ‘char*’
/usr/bin/ld: warning: libtiff.so.4, needed by ../../../lib//libVrBio.so, not found (try using -rpath or -rpath-link)
../../../lib//libVrBio.so: undefined reference to `TIFFWriteScanline'
../../../lib//libVrBio.so: undefined reference to `TIFFDefaultStripSize'
../../../lib//libVrBio.so: undefined reference to `__fdelt_chk@GLIBC_2.15'
../../../lib//libVrBio.so: undefined reference to `_TIFFmalloc'
../../../lib//libVrBio.so: undefined reference to `memcpy@GLIBC_2.14'
../../../lib//libVrBio.so: undefined reference to `TIFFClose'
../../../lib//libVrBio.so: undefined reference to `TIFFSetErrorHandler'
../../../lib//libVrBio.so: undefined reference to `TIFFGetField'
../../../lib//libVrBio.so: undefined reference to `_TIFFfree'
../../../lib//libVrBio.so: undefined reference to `TIFFClientOpen'
../../../lib//libVrBio.so: undefined reference to `TIFFSetField'
../../../lib//libVrBio.so: undefined reference to `TIFFReadDirectory'
../../../lib//libVrBio.so: undefined reference to `TIFFSetWarningHandler'
../../../lib//libVrBio.so: undefined reference to `TIFFReadRGBAImageOriented'
collect2: ld returned 1 exit status
make: *** [MatchingExample] Error 1
==================================================
this is the Makefile codes:
# ------------------ Compilation options ------------------------
# Loads libraries. 
LIBS = -lVrBio -lpthread -ludev -lusb -lusb-1.0 -ldl

# Flags for the C compiler:
#   -Wall for strict gcc warnings (requires prototypes for all functions).
#   -g to produce debug data for gdb
#   -O for optimization
CFLAGS = -Wall -g

CC = g++
# --------------------- Directory Paths ----------------------------

INC_DIRS = -I../../../include/

LIB_DIRS = -L../../../lib/

BIN_DIR = ../../../bin/

# --------------------- Code modules ----------------------------

# Object files
#OBJ =

# Definitions
#DEFS = 
# ------------------------ Rules --------------------------------

$@.cpp: $@.cpp 
    ${CC} $(CFLAGS) $@.cpp -o $(BIN_DIR)$@ $(INC_DIRS) $(LIB_DIRS)   $(LIBS)
==========================
aslo this is the ReadMe file content
In the AsyncCaptureExample folder there is a Makefile. This Makefile can be used for all the
other cpp examples.

编译使用:make

例如:制作AsyncCaptureExample

输出将生成在 bin 文件夹中。

这也是 VeridisBiometricSDK_5.0 自述文件: 1 - 安装必要的包: *libudev *libusb *libusb-1.0 *fxload 2 - 在 misc 文件夹中有程序访问 USB 所需的文件,扩展名为 .rules。复制它们 到 /etc/udev/rules.d 文件夹或等效文件

3 - mkdir /usr/share/usb 并在那里复制 misc 文件夹的 .hex 文件 4 - 将 LD_LIBRARY_PATH 设置为 .so 文件的路径

5 - 将 misc 文件夹中的文件 UFLicense.dat 复制到您的应用程序的文件夹中 如果你使用 suprema 阅读器。

你能帮帮我吗?

更新

我非常接近解决我的问题: 首先,我在下面的 link 上找到了为 Ubuntu 安装 libtiff.so.4 的解决方案: https://askubuntu.com/questions/457011/why-is-libtiff-so-4-not-recognized 其次,我使用 alien 工具将相同的 Ubuntu 库包转换为 centos rpm,如下所示: 外星人 -r -g libtiff4_3.9.7-2ubuntu1_amd64.deb 第三,我在我的 Centos 6.7 上安装了 libtiff4-3.9.7-3.x86_64.rpm(这是外星人转换的结果)它安装成功但是当我尝试制作我的样本时我超大了 libtiff.so.4 需要 2

个图书馆
[root@localhost]# readelf  -d  /usr/lib/x86_64-linux-gnu/libtiff.so.4
0x0000000000000001 (NEEDED)             Shared library: [libjbig.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libjpeg.so.8]

我从 jpegsrc.v8.tar.gz 的源代码库安装了 libjpeg.so.8,它运行良好 但是我找不到任何合适的包来修复丢失的 libbig.so.0 库 那么你能帮我修复这个丢失的库吗…… 顺便说一下,当我解决我的问题时,我会解释所有的解决方案,这样它对任何人都有用

终于解决了我的问题 如果你读了我的问题,你就会知道我的问题不见了 libtiff.so.4

我修好了, 我的解决方案步骤如下 第一的 如果您使用此命令

来显示电流 libtiff.so
[yaserco@localhost Desktop]$ locate libtiff.so
/usr/lib64/libtiff.so.3

所以我把 link 变成了 libtiff.so.3

ln -s /usr/lib64/libtiff.so.3 /usr/lib64/libtiff.so.4

在我测试我的样本后,它显示了这 2 条错误消息 尝试了这个解决方案:首先创建符号 link ln -s /usr/lib64/libtiff.so.3.9.4 /usr/lib64/libtiff.so.4 然后我执行了命令 [root@localhost MatchingExample]# make MatchingExample it错误结果为:

MatchingExample.cpp: In function ‘int main()’:
MatchingExample.cpp:47: warning: deprecated conversion from 
string constant to ‘char*’ MatchingExample.cpp:55: warning: deprecated

conversion from string constant to ‘char*’ ../../../lib//libVrBio.so: 

undefined reference to __fdelt_chk@GLIBC_2.15' ../../../lib//libVrBio.so: 
undefined reference to memcpy@GLIBC_2.14'

秒 我通过安装

解决了这个错误

一个- glibc for (GLIBC_2.14)​​ 如下:

cd /tmp
wget http://ftp.gnu.org/gnu/glibc/glibc-2.16.0.tar.gz
tar -xvzf glibc-2.16.0.tar.gz
cd glibc-2.16.0
mkdir glibc-build
cd glibc-build
../configure --prefix='/usr'

B-

我们必须修正一个小错字,所以 运行:

nano +171 ../scripts/test-installation.pl

and replace if (/$ld_so_name/) { with if (/\Q$ld_so_name\E/) {
:

make
sudo make install

从这里查看更多 link https://github.com/FezVrasta/ark-server-tools/wiki/Install-of-required-versions-of-glibc-and-gcc-on-RHEL-CentOS 然后当我编译我的示例时它运行良好