I hope this question is not to specific. I am trying to compile the vlfeat library for octave 3.6.2.
It compiles the mex-files without errors. But if I execute
vl_setup
vl_demo
i get
error: vl_demo_sift_basic: vl_sift.mex: failed to load: vl_sift.mex: undefined symbol: vl_sift_process_next_octave
If I use octave 3.4.3 instead, the mex file loads without errors. (But there are other errors later because of matlab functions which are not implemented yet in this version of octave.)
I have no idea how I could start investigating this problem. What could be the reason for such an error message? Or what can I do to further investigate this problem?
Update: I did some more research. But I am not very familiar with the process of linking and compiling.
を使用ldd
すると、vlfeat 共有ライブラリがリストに表示されないことがわかります。nm
記号を使用すると、未定義を表す「U」が表示されます。しかし、ライブラリはリンクされるべきだと思います。問題はすべての mex ファイルにあります。ファイルのコンパイル方法の一例を次に示します。私が見る限り、ライブラリは mex ファイルにリンクされています。
CFLAGS="-std=c99 -Wall -Wextra -Wno-unused-function -Wno-long-long -Wno-variadic-macros -DNDEBUG -O3 -I./toolbox" \
CXXFLAGS="" \
LDFLAGS=" -Wl,--rpath,\$ORIGIN/ -Wl,--as-needed -lpthread -lm -Lbin/glnxa64 -lvl" \
mkoctfile \
--mex \
"./toolbox/misc/vl_version.c" --output "toolbox/mex/octave/vl_version.mex"