在mac osx 10.9.3上是线性的



环境:Matlab R2014a (8.3), Macosx mavericks 10.9.3, Apple LLVM version 5.1 (clang503.0.40)

我正在编译从http://www.csie.ntu.edu.tw/~cjlin/liblinear/的线性包。我固定了matlab安装目录中的mexopts.h指向右SDKROOT, C和CXX。当我在lib -1.94/matlab/目录下从matlab内部运行make时,libsvmread和libsvmwrite成功地生成了mexmaci64库。然而,它并没有产生训练和预测。因此,我在make中注释了try catch期望,以了解错误。现在我得到以下错误:

Error using mex  
Undefined symbols for architecture x86_64:  
"_daxpy_", referenced from:  
  TRON::tron(double*) in tron.o  
  TRON::trcg(double, double*, double*, double*) in tron.o  
"_ddot_", referenced from:  
  TRON::tron(double*) in tron.o
  TRON::trcg(double, double*, double*, double*) in tron.o
"_dnrm2_", referenced from:
  TRON::tron(double*) in tron.o
  TRON::trcg(double, double*, double*, double*) in tron.o
"_dscal_", referenced from:
  TRON::trcg(double, double*, double*, double*) in tron.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see
invocation)

Error in make (line 16)
    mex CFLAGS="$CFLAGS -std=c99 -v" -largeArrayDims train.c
            linear_model_matlab.c ../linear.cpp ../tron.cpp
            "../blas/*.c"

知道为什么我得到这个错误吗?

看起来程序正在寻找blas文件夹中的文件。

我得到了完全相同的错误,当试图手动添加线性到我的c++使用cmake(与新的rank -所以我不能酿造)。我通过添加解决了这个问题。o和blas/。O文件作为我的项目的源代码。

…使用这个作为一个类比,也许你只包括线性文件夹,而不是文件夹及其所有内容在你的Matlab项目?

Dylib in x86_64

首先,让我们确保线性(或您链接到的任何库)dylib是x86_64格式,或者至少是通用(i386 + x86_64)格式。

$ file/usr/local/cellar/lilinear/1.94/lib/lilinear .dylib/usr/local/Cellar/liblinear/1.94/lib/liblinear.dylib: Mach-O 64位动态链接共享库x86_64

如果你通过Homebrew安装你的库,这应该不是一个问题。

<标题> GNU Libtool h1> 一个我经常看到ld: symbol(s) not found for architecture x86_64的例子是当我使用GNU的libtool编译node.js模块时。如果您安装了GNU Libtool,请尝试卸载/解除链接

相关内容

  • 没有找到相关文章

最新更新