编译insilico/plink时提示无法找到-lplink错误的解决求助
编译insilico/plink时出现
-lplink找不到的错误 问题背景
操作步骤:
- 克隆insilico/plink仓库并进入对应目录
- 运行
./bootstrap.sh - 执行
./configure && make && sudo make install
终端返回错误信息:
/bin/bash ./libtool --tag=CXX --mode=link g++ -DUNIX -DWITH_R_PLUGINS -DSKIP -DWITH_LAPACK -fopenmp -O3 -o plink plink.o -lplink -lgomp -llapack -lz -ldl -lcrypt libtool: link: g++ -DUNIX -DWITH_R_PLUGINS -DSKIP -DWITH_LAPACK -fopenmp -O3 -o plink plink.o -lplink -lgomp -llapack -lz -ldl -lcrypt -fopenmp /usr/bin/ld: cannot find -lplink: No such file or directory collect2: error: ld returned 1 exit status
Makefile相关代码片段:
# dir to install headers for plink library libplink_ladir = $(includedir)/plink plink_SOURCES = plink.cpp plink_LDADD = -lplink
错误原因
链接器ld无法找到libplink库,核心原因有两点:
- 编译顺序错误:主程序
plink的编译链接优先级高于libplink库,导致链接时libplink还未生成 - 链接器搜索路径缺失:即使
libplink已生成,链接器也没被指引到存放该库的目录(比如当前目录或.libs子目录)
解决方法
方法1:调整编译顺序
打开生成的Makefile,找到all目标的定义,将libplink.la(或libplink.a/libplink.so)添加到plink之前,确保库先编译完成:
all: libplink.la plink
保存后重新执行make
方法2:指定库的搜索路径
修改Makefile中的plink_LDADD,添加库所在目录的路径(通常是当前目录或.libs子目录):
plink_LDADD = -L. -lplink # 若库在.libs目录下,改为:plink_LDADD = -L.libs -lplink
保存后重新执行make
方法3:重新配置并编译
先清理之前的编译产物:
make clean && rm -rf .libs
重新运行configure时显式指定库搜索路径:
./configure LDFLAGS="-L." && make && sudo make install
内容的提问来源于stack exchange,提问作者lamdeb
相关产品推荐
相关产品推荐

