这是我在这里的第一个问题,如果没有很好的表述或愚蠢的话,请向前表示抱歉。
我正在尝试使用带有C ++的八度音程库
我在Ubuntu(linux noob)上使用Qt创建者
#include "octave/oct.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Matrix matrix(3,4);
return a.exec();
}
起初我得到了一些未定义的引用错误。我发现程序缺少库,所以我找了库“liboctave.so”。我在usr / lib / octave-3.2.4中找到了它。更确切地说,有一个名为“liboctave.so”的符号链接指向“liboctave.so.3.2.4”文件。我使用QtCreators“添加库”功能将库添加到我的项目中。该程序在我的.pro文件中生成了此代码
unix:!macx:!symbian: LIBS += -L$$PWD/../../../../usr/lib/octave-3.2.4/ -loctave
INCLUDEPATH += $$PWD/../../../../usr/lib/octave-3.2.4
DEPENDPATH += $$PWD/../../../../usr/lib/octave-3.2.4
程序构建没有错误。甚至没有抱怨未定义的引用。但是当我运行它时,我得到了
开始/ home / martin / Projects / test-build-desktop / test ...
/home/martin/Projects/test-build-desktop/test: error while loading shared libraries: liboctave.so: cannot open shared object file: No such file or directory
/home/martin/Projects/test-build-desktop/test exited with code 127
我无法弄清楚为什么找不到该文件。我只是睁着眼睛看文件。
我发现问题可能是权限,所以我将“liboctave.so.3.2.4”文件复制到项目位置,将其重命名为“liboctave.so”并为每个人添加了所有权限。然后使用Qtcreator“添加库”功能添加了这个库,我仍然得到相同的错误。
请帮帮我
答案 0 :(得分:2)
当你编译它时,liboctave没有安装在标准位置
但是在运行中参数-L$$PWD/../../../../usr/lib/octave-3.2.4/
时间不得而知。
所以你有两个选择:
提供环境变量LD_LIBRARY_PATH=/full/path/to/usr/lib/octave-3.2.4
,然后运行程序:
export LD_LIBRARY_PATH=/full/path/to/usr/lib/octave-3.2.4
使用附加选项使用excutable对路径进行硬编码:-Wl,-rpath=$$PWD/../../../../usr/lib/octave-3.2.4/
它会在这个位置搜索它。