我尝试使用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
这也是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库 所以你能帮我解决这个丢失的库吗? 顺便说一句,当我解决问题时,我会解释所有解决方案,这样对任何一个
都有用答案 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 然后,当我编译我的样本时,它运作良好