You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译CBLAS供ghostjat/np使用时make执行失败的问题求助

编译CBLAS共享库用于PHP矩阵运算的问题

我正在尝试构建BLAS共享库,用于ghostjat/np的PHP矩阵运算,但编译CBLAS源码时一直遇到问题,环境为Ubuntu 20工作站,操作步骤如下:

# 创建目录
mkdir ~/blas
cd ~/blas
# 下载并解压CBLAS源码
wget http://www.netlib.org/blas/blast-forum/cblas.tgz
tar -xvzf cblas.tgz

# 进入CBLAS目录
cd CBLAS

# 按照README替换Makefile
rm Makefile.in
ln -s Makefile.LINUX Makefile.in

# 执行编译
make

第一次执行make时,因缺少gfortran报错:

gfortran -O3   -c sdotsub.f
make[1]: gfortran: Command not found
make[1]: *** [Makefile:247: sdotsub.o] Error 127
make[1]: Leaving directory '/home/foo/biz/machine-learning/blas/CBLAS/src'
make: *** [Makefile:147: allprecision] Error 2

安装gfortran后:

sudo apt install gfortran

再次执行make,能编译大部分内容,但仍报错:

make[1]: Entering directory '/home/foo/biz/machine-learning/blas/CBLAS/testing'
gcc -I../include -O3 -DADD_ -c c_sblas1.c
gfortran -O3   -c c_sblat1.f
c_sblat1.f:214:48:

  214 |                CALL STEST1(SNRM2TEST(N,SX,INCX),STEMP,STEMP,SFAC)
      |                                                1
Warning: Rank mismatch in argument ‘strue1’ at (1) (scalar and rank-1) [-Wargument-mismatch]
c_sblat1.f:218:48:

  218 |                CALL STEST1(SASUMTEST(N,SX,INCX),STEMP,STEMP,SFAC)
      |                                                1
Warning: Rank mismatch in argument ‘strue1’ at (1) (scalar and rank-1) [-Wargument-mismatch]
gfortran  -o xscblat1 c_sblat1.o c_sblas1.o ../lib/cblas_LINUX.a libblas.a 
gfortran: error: libblas.a: No such file or directory
make[1]: *** [Makefile:72: xscblat1] Error 1
make[1]: Leaving directory '/home/foo/biz/machine-learning/blas/CBLAS/testing'
make: *** [Makefile:180: alltst] Error 2

我的需求是生成类似cblas.so的共享库用于PHP脚本,但编译后找不到.so文件,也不清楚应该生成哪些文件。


补充尝试

  • 有人建议安装BLAS或libopenblas-dev,但我的目标是得到可随PHP源码分发的库,因此希望通过编译CBLAS实现。
  • 我意识到CBLAS只是BLAS的C包装器,需要依赖BLAS静态库。于是编译BLAS 3.11.0得到blas_LINUX.a,路径为/Users/foo/Desktop/biz/machine-learning/blas2/BLAS-3.11.0/blas_LINUX.a,并修改CBLAS的Makefile.in中的BLLIB配置:
    原内容:
    BLLIB = libblas.a
    
    修改后:
    BLLIB = /Users/foo/Desktop/biz/machine-learning/blas2/BLAS-3.11.0/blas_LINUX.a
    
    执行make clean all后,测试阶段仍报错:
    ( cd testing && make all )
    gcc -I../include -O3 -DADD_ -c c_sblas1.c
    gfortran -O3   -c c_sblat1.f
    c_sblat1.f:214:48:
    
      214 |                CALL STEST1(SNRM2TEST(N,SX,INCX),STEMP,STEMP,SFAC)
          |                                                1
    Error: Rank mismatch in argument 'strue1' at (1) (scalar and rank-1)
    c_sblat1.f:218:48:
    
      218 |                CALL STEST1(SASUMTEST(N,SX,INCX),STEMP,STEMP,SFAC)
          |                                                1
    Error: Rank mismatch in argument 'strue1' at (1) (scalar and rank-1)
    make[1]: *** [c_sblat1.o] Error 1
    make: *** [alltst] Error 2
    

希望能得到帮助完成编译,生成可用的共享库。


内容的提问来源于stack exchange,提问作者S. Imp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 00:31:15