我需要以非 root 用户身份通过 CPAN安装 Perl PDL 库。
由于这个 SO 问题,非 root 用户的 CPAN 可以工作:如何将 CPAN 用作非 root 用户?
现在,PDL 依赖于 FFTW 库。显然,当我需要这台机器的 64 位时,我的系统管理员安装了 32 位版本。
我基于 CPAN 安装期间的以下错误消息:
gcc -shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic FFTW.o -o ../../blib/arch/auto/PDL/FFTW/FFTW.so \
-lm -L/lib -L/usr/lib -L/usr/local/lib -L/usr/local/lib64 -L/lib64 -L/usr/lib64 -ldfftw -ldrfftw \
/usr/bin/ld: skipping incompatible /usr/local/lib/libdfftw.a when searching for -ldfftw
/usr/bin/ld: skipping incompatible /usr/local/lib/libdfftw.a when searching for -ldfftw
/usr/bin/ld: cannot find -ldfftw
现在我已经成功安装了 fftw 了$HOME/lib
,确实libdfftw.a
。
问题是我无法让这个 gcc 编译实例使用本地安装的副本。
我尝试了以下方法:
- 在 .bash_profile 中设置 LD_LIBRARY_PATH,是的,导出它——没有骰子。
- 以下如何为 Makefile.PL 设置库并包含路径以进行单个安装?,我开始
o conf makepl_arg
:cpan
--LIBS=-L/homedir/lib INC=-I/homedir/include
仍然没有骰子 - 我做了与第 2 步相同的操作,但
o conf mbuild_arg
--- 再次,没有骰子。
这些尝试都没有对gcc
上面的行产生任何影响;没有使用-L
标志指定的其他路径。
我还能尝试什么cpan
来让这个编译命令引用我的 fftw 副本?
更新 1
在进行任何更改之前,我应该补充的makepl_arg
是:
makepl_arg [INSTALLDIRS=site]
因此,我设置makepl_arg
为:
makepl_arg [INSTALLDIRS=site LIBS=-L/homedir/lib INC=-I/homedir/include]
我正在设置这些配置而没有o conf commit
允许进行实验。我应该进行这些更改吗?
更新 2
我看到上面一行中的那些-L
标志gcc
来自makefile,它本身似乎是由MakeMaker制作的,我认为它正在读取文件'Makefile.PL'