[英]Linking with BLAS OS X
我目前正在嘗試使用我不太熟悉的庫來編譯程序。 運行編譯器時,出現以下輸出/錯誤:
Undefined symbols for architecture x86_64:
"_cblas_ddot", referenced from:
shark::LDA::train(shark::LinearClassifier<shark::blas::vector<double> >&, shark::LabeledData<shark::blas::vector<double>, unsigned int> const&) in libshark.a(LDA.cpp.o)
shark::LDA::train(shark::LinearClassifier<shark::blas::vector<double> >&, shark::WeightedLabeledData<shark::blas::vector<double>, unsigned int> const&) in libshark.a(LDA.cpp.o)
我當前的想法是,這是因為缺少了我剛剛下載並編譯過的BLAS庫(來自fortran代碼?)。
用於編譯的命令行參數看起來像這樣
g++ -o example -I/to/boost/include -I/to/shark/include -L/to/boost/lib -L/to/shark/lib -L/to/BLAS -lshark -lblas -l(boost_flags)
在/to/BLAS
有一個libblas.a
,我運行了nm libblas.a
,它給出了一行
libblas.a(ddot.o):
00000000000001c0 s EH_frame1
0000000000000000 T _ddot_
對此並不太安全,我認為這意味着該庫確實具有符號,但沒有_cblas_
前綴。
從這一點上我該怎么辦? 我可以更改符號名稱嗎? 還是我需要將此庫與其他鏈接?
我使用OS X Mavericks
提前致謝 : )
根據Logicrat的建議,解決方案是我需要其他文件,我從這里下載了源代碼,並使用cmake / make進行了無縫連接。 與由此產生的庫鏈接解決了該問題。
OS X附帶了已安裝的BLAS(包括cblas)(它是Accelerate.framework的一部分)。 無需下載和構建自己的。 只需與-lcblas
鏈接-lcblas
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.