使用外部库编译 mex 函数
Compile mex function with external libraries
我正在尝试使用外部库生成 mex 函数。我正在使用 Ubuntu 18 和 Matlab R2021a。
特别是我想编译我的 file.cpp,它使用我的名为模型的 cpp 库。
我做的是
mex -I<path_library_include> -L<path_library_so_file> -lmodel.so -lboost_system -lstdc++ file.cpp -v
在 -I 中,我将库包含的路径放在 -L 中,libmodel.so 所在的路径,然后我又添加了 2 个库,最后添加了源文件我要编译。
通过这种方式我可以编译我的源代码但是当我尝试执行 mex 函数时我得到:
libmodel.so: cannot open shared object file: No such file or directory
我也测试了matlab之外的库,工作正常,这是我用来编译Matlab之外的库的命令
gcc -Wall -I<path_library_include> -L<path_library_so_file> main.cpp -lmodel -lboost_system -lstdc++ -o main
Matlab 可能有什么问题?
感谢273K给了我正确的方向。
问题是 LD_LIBRARY_PATH 没有配置好,事实上 运行ning /sbin/ldconfig -v
我的图书馆不存在。因此,为了添加共享库,我在 /etc/ld.so.conf.d/
中以 root 身份创建了一个名为 mylib.conf
的新文件,名称只是扩展名并不重要。那我运行
sudo ldconfig
在那之后图书馆实际上出现了 运行ning
/sbin/ldconfig -v | grep model
其中模型是我的库的名称。可以看到输出。
我正在尝试使用外部库生成 mex 函数。我正在使用 Ubuntu 18 和 Matlab R2021a。
特别是我想编译我的 file.cpp,它使用我的名为模型的 cpp 库。 我做的是
mex -I<path_library_include> -L<path_library_so_file> -lmodel.so -lboost_system -lstdc++ file.cpp -v
在 -I 中,我将库包含的路径放在 -L 中,libmodel.so 所在的路径,然后我又添加了 2 个库,最后添加了源文件我要编译。
通过这种方式我可以编译我的源代码但是当我尝试执行 mex 函数时我得到:
libmodel.so: cannot open shared object file: No such file or directory
我也测试了matlab之外的库,工作正常,这是我用来编译Matlab之外的库的命令
gcc -Wall -I<path_library_include> -L<path_library_so_file> main.cpp -lmodel -lboost_system -lstdc++ -o main
Matlab 可能有什么问题?
感谢273K给了我正确的方向。
问题是 LD_LIBRARY_PATH 没有配置好,事实上 运行ning /sbin/ldconfig -v
我的图书馆不存在。因此,为了添加共享库,我在 /etc/ld.so.conf.d/
中以 root 身份创建了一个名为 mylib.conf
的新文件,名称只是扩展名并不重要。那我运行
sudo ldconfig
在那之后图书馆实际上出现了 运行ning
/sbin/ldconfig -v | grep model
其中模型是我的库的名称。可以看到输出。