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
然后当我编译我的示例时它运行良好
我尝试使用 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 然后当我编译我的示例时它运行良好