vlfeat笔记
2020-03-23
2020-03-23
cpp(Linux)
参考:https://www.vlfeat.org/gcc.html
向/etc/ld.so.conf.d/
下任意一个文件(如opencv.conf
)添加so库(例如libvl.so
)的路径,然后sudo ldconfig
extern "C" { |
g++ vl_test.cpp -o test -I$(VL) -L$(VL)/bin/glnxa64 -lvl |
编译
单独使用sift模块
使用源文件
- 保留
vl
目录下所有文件 - 保留
src
下的sift.c
和generic-driver.h
- 注释
host.h
部分代码(约665行)/* Linux: limit glibc to old versions for compatibility */
// #if defined(VL_COMPILER_GNUC) & defined(VL_OS_LINUX) & ! defined(__DOXYGEN__)
// __asm__(".symver memcpy,memcpy@GLIBC_2.2.5");
// #endif - 在
vl
下创建一个头文件fuck.h
- 在
vl
下的host.h
,imopv_sse2.c
头部添加 CMakeLists.txt
编写# vlfeat
set(vlfeat_dir /home/lynx/fuck_mount/vlfeat/vlfeat_android)
include_directories(${vlfeat_dir})
aux_source_directory(/home/lynx/fuck_mount/vlfeat/vlfeat_android/src vl_src)
aux_source_directory(/home/lynx/fuck_mount/vlfeat/vlfeat_android/vl vl_head)
add_library(
vlfeat_lib
SHARED
${vl_src}
${vl_head}
)
# 添加目标文件/目标库
add_executable(
entry
source.cpp )
# 连接库文件
target_link_libraries(
entry
${OpenCV_LIBS}
# ${vlfeat_lib}
vlfeat_lib
)
常见错误
- 找不到
libiomp5.so
apt-file search libiomp5.so |
cc1
报错:…不是目录
解除挂载的硬盘,make clean
后重新编译
- 编译错误
vl/mathop.h:92:37: error: ‘vl_infinity_d’ not specified in enclosing ‘parallel’ |
解决: /vl/kmeans.c
(参考)
// #pragma omp parallel default(none) |
- matlab模块错误
如果安装了texlive,那么makefile在检测时会把pdftex检测为matlab,直接把make/matlab.mak
内容清空即可