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

时间:2016-01-19 18:07:25

标签: c++ linux centos

我尝试使用VeridisBiometricSDK_5.0_Linux这是一个免费的生物识别库,它有我厌倦的样本来编译MatchingExample,完全按照自述文件说的那样:  make 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

例如:make AsyncCaptureExample

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

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

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

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

你能帮我吗?

更新

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

[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库     所以你能帮我解决这个丢失的库吗?     顺便说一句,当我解决问题时,我会解释所有解决方案,这样对任何一个

都有用

1 个答案:

答案 0 :(得分:0)

最后我解决了我的问题 如果你读了我的问题,你会知道我的问题是缺少libtiff.so.4

我修好了, 我的解决方案步骤如下 第一 如果你使用这个命令来翻阅当前的libtiff.so

[yaserco@localhost Desktop]$ locate libtiff.so
/usr/lib64/libtiff.so.3

所以我把symble链接到了libtiff.so.3

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

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

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'

第二 我通过安装

解决了这个错误

A- 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'

乙 -

我们必须解决一个小错字,所以运行:

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

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

make
sudo make install

请参阅此链接的更多表单 https://github.com/FezVrasta/ark-server-tools/wiki/Install-of-required-versions-of-glibc-and-gcc-on-RHEL-CentOS 然后,当我编译我的样本时,它运作良好