我在使用 make 命令时遇到问题。我正在 RHEL 上为 ppc64 编译 Scilab。 ./configure 进展顺利,现在当我 make all 时,我在编译模块 umfpack 时遇到了问题。我可以通过进入 module/umfpack 文件夹并在其中输入 make all 来重现此错误。这是输出:
enter[root@rhel70-misurio umfpack]# /bin/sh ../../libtool --tag=CC --mode=link gcc -D_LARGEFILE64_SOURCE -DNDEBUG -fno-stack-protector -g -O2 -version-number 5:5:1 -Wl,--no-as-needed -o libsciumfpack.la -rpath /usr/local/lib/scilab sci_gateway/c/libsciumfpack_la-gw_umfpack.lo sci_gateway/c/libsciumfpack_la-sci_res_with_prec.lo sci_gateway/c/libsciumfpack_la-sci_taucs_chdel.lo sci_gateway/c/libsciumfpack_la-sci_taucs_chfact.lo sci_gateway/c/libsciumfpack_la-sci_taucs_chget.lo sci_gateway/c/libsciumfpack_la-sci_taucs_chinfo.lo sci_gateway/c/libsciumfpack_la-sci_taucs_chsolve.lo sci_gateway/c/libsciumfpack_la-sci_umf_ludel.lo sci_gateway/c/libsciumfpack_la-sci_umf_lufact.lo sci_gateway/c/libsciumfpack_la-sci_umf_luget.lo sci_gateway/c/libsciumfpack_la-sci_umf_luinfo.lo sci_gateway/c/libsciumfpack_la-sci_umf_lusolve.lo sci_gateway/c/libsciumfpack_la-sci_umfpack.lo libsciumfpack-algo.la -L-lumfpack -lsuitesparseconfig -lumfpack -lpthread -ldl -lcurses -lm
../../libtool: line 6000: cd: -l: invalid option
cd: usage: cd [-L|[-P [-e]]] [dir]
libtool: link: cannot determine absolute directory name of `-lumfpack'
所以很明显,代码在某个地方正在执行“cd -”某些操作。但是哪里...?这是我所在的文件夹。
[root@rhel70-hostname umfpack]# ls
etc libsciumfpack-algo.la make_all_log sci_gateway umfpack.iss
examples license.txt Makefile src UMFPACK_license.txt
help locales Makefile.am TAUCS_license.txt
includes macros Makefile.in tests
您认为哪些候选人是我必须调查的错误所在?你会代替我进行调试吗?
谢谢!
最佳答案
非常感谢您的建议!我进入 libtool 文件,确实发现在第 6'000 行有这样一行代码:
absdir=`cd "$dir" && pwd`
test -z "$absdir" && \
func_fatal_error "cannot determine absolute directory name of \`$dir'"
我意识到它在脚本中执行“cd -lumfpack”。这是我给 ./configure 脚本的输入,在该脚本中我必须显式提供 libumfpack 和 libsuitesparseparseconfig 作为选项,因为它默认使用其他库。在该选项中,我给出了:
--with-umfpack-library="-lumfpack -lsuitesparseconfig"
然后 make 正在执行“cd -lumfpack”。所以我考虑提供两个库的绝对路径!所以我作为输入:
--with-umfpack-library="/usr/local/lib/libumfpack.a /usr/local/lib/libsuitesparseconfig.a"
它成功运行了配置脚本和 make。
另一个“解决方案”是删除 umfpack 库以及配置脚本的选项:
--without-umfpack
希望它对 future 编译 Scilab 的程序员有所帮助!
老实说,我认为另一种方法是可行的,即直接在配置脚本中指定 libumfpack 和 libsuitesparseconfig 库,但我当时没有时间对此进行调查。如果我愿意,我会更新这篇文章。
关于linux - ../../libtool : line 6000: cd: -l: invalid option; where to solve it?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28770557/