+ -
当前位置:首页 → 问答吧 → 小菜弱弱的问一句:在Linux下有C++的用武之地吗?

小菜弱弱的问一句:在Linux下有C++的用武之地吗?

时间:2010-10-13

来源:互联网

本人在 CLAPACK-3.2.1 目录下直接 make,没有错误输出,且生成了 lapack_LINUX.a,blas_LINUX.a,tmglib_LINUX.a 和 F2CLIBS/libf2c.a 四个 *.a 文件。然后我进行了如下操作:
cp lapack_LINUX.a liblapack_LINUX.a
cp blas_LINUX.a libblas_LINUX.a
ranlib libblas_LINUX.a
ranlib liblapack_LINUX.a

cd F2CLIBS/
cp libf2c.a liblibf2c.a
ranlib liblibf2c.a

cp liblibf2c.a ../
最后我将 http://www.netlib.org/clapack/faq.html#1.5 给出的例子程序存为test.c且置于CLAPACK-3.2.1 目录下,然后用以下命令编译连接:
gcc -Wall -o test test.c -L. -I./INCLUDE/ -lblas_LINUX -llapack_LINUX -llibf2c -lm
此时得到了不少错误报告,部分如下:
./liblapack_LINUX.a(dgesvd.o): In function `dgesvd_':
dgesvd.c:(.text+0x3cf8): undefined reference to `f2c_dgemm'
dgesvd.c:(.text+0x40f7): undefined reference to `f2c_dgemm'
dgesvd.c:(.text+0x5327): undefined reference to `f2c_dgemm'
dgesvd.c:(.text+0x57d0): undefined reference to `f2c_dgemm'
dgesvd.c:(.text+0x6ab2): undefined reference to `f2c_dgemm'
./liblapack_LINUX.a(dgesvd.o):dgesvd.c:(.text+0x6df9): more undefined references to `f2c_dgemm' follow
./liblapack_LINUX.a(dbdsqr.o): In function `dbdsqr_':
dbdsqr.c:(.text+0x66c): undefined reference to `f2c_dscal'
dbdsqr.c:(.text+0x762): undefined reference to `f2c_dswap'
dbdsqr.c:(.text+0x7b6): undefined reference to `f2c_dswap'
dbdsqr.c:(.text+0x800): undefined reference to `f2c_dswap'
dbdsqr.c:(.text+0xdab): undefined reference to `f2c_drot'
dbdsqr.c:(.text+0xe13): undefined reference to `f2c_drot'
dbdsqr.c:(.text+0xe75): undefined reference to `f2c_drot'
./liblapack_LINUX.a(dlasq1.o): In function `dlasq1_':
dlasq1.c:(.text+0x1ec): undefined reference to `f2c_dcopy'
dlasq1.c:(.text+0x220): undefined reference to `f2c_dcopy'
./liblapack_LINUX.a(dgebrd.o): In function `dgebrd_':
dgebrd.c:(.text+0x403): undefined reference to `f2c_dgemm'
这似乎是因为未成功连接libf2c库造成的,但我在gcc命令中确实包含了啊,即-llibf2c。这是为什么呢?大家有什么想法吗?

另外,gcc命令中写库的顺序还有讲究呢?把 -llibf2c 往前挪似乎有更多的错误提示啊。

dehiker

作者: dehiker   发布时间: 2010-10-13

本人在 CLAPACK-3.2.1 目录下直接 make,没有错误输出,且生成了 lapack_LINUX.a,blas_LINUX.a,tmglib_LINUX.a 和 F2CLIBS/libf2c.a 四个 *.a 文件。然后我进行了如下操作:
cp lapack_LINUX.a liblapack_LINUX.a
cp blas_LINUX.a libblas_LINUX.a
ranlib libblas_LINUX.a
ranlib liblapack_LINUX.a

cd F2CLIBS/
cp libf2c.a liblibf2c.a
ranlib liblibf2c.a

cp liblibf2c.a ../
最后我将 http://www.netlib.org/clapack/faq.html#1.5 给出的例子程序存为test.c且置于CLAPACK-3.2.1 目录下,然后用以下命令编译连接:
gcc -Wall -o test test.c -L. -I./INCLUDE/ -lblas_LINUX -llapack_LINUX -llibf2c -lm
此时得到了不少错误报告,部分如下:
./liblapack_LINUX.a(dgesvd.o): In function `dgesvd_':
dgesvd.c:(.text+0x3cf8): undefined reference to `f2c_dgemm'
dgesvd.c:(.text+0x40f7): undefined reference to `f2c_dgemm'
dgesvd.c:(.text+0x5327): undefined reference to `f2c_dgemm'
dgesvd.c:(.text+0x57d0): undefined reference to `f2c_dgemm'
dgesvd.c:(.text+0x6ab2): undefined reference to `f2c_dgemm'
./liblapack_LINUX.a(dgesvd.o):dgesvd.c:(.text+0x6df9): more undefined references to `f2c_dgemm' follow
./liblapack_LINUX.a(dbdsqr.o): In function `dbdsqr_':
dbdsqr.c:(.text+0x66c): undefined reference to `f2c_dscal'
dbdsqr.c:(.text+0x762): undefined reference to `f2c_dswap'
dbdsqr.c:(.text+0x7b6): undefined reference to `f2c_dswap'
dbdsqr.c:(.text+0x800): undefined reference to `f2c_dswap'
dbdsqr.c:(.text+0xdab): undefined reference to `f2c_drot'
dbdsqr.c:(.text+0xe13): undefined reference to `f2c_drot'
dbdsqr.c:(.text+0xe75): undefined reference to `f2c_drot'
./liblapack_LINUX.a(dlasq1.o): In function `dlasq1_':
dlasq1.c:(.text+0x1ec): undefined reference to `f2c_dcopy'
dlasq1.c:(.text+0x220): undefined reference to `f2c_dcopy'
./liblapack_LINUX.a(dgebrd.o): In function `dgebrd_':
dgebrd.c:(.text+0x403): undefined reference to `f2c_dgemm'
这似乎是因为未成功连接libf2c库造成的,但我在gcc命令中确实包含了啊,即-llibf2c。这是为什么呢?大家有什么想法吗?

另外,gcc命令中写库的顺序还有讲究呢?把 -llibf2c 往前挪似乎有更多的错误提示啊。

dehiker

作者: dehiker   发布时间: 2010-10-13