【问题标题】:make command error: ld cannot find libraries that existmake 命令错误:ld 找不到存在的库
【发布时间】:2022-07-21 18:49:17
【问题描述】:

我正在运行 make 并且 ld 将找不到我使用 dnf provides '*/libpthread.so' 验证存在的库。我收到以下错误代码:

g++ -fopenmp -static -lpthread -o bayescan_2.1 start.o beta.o dirichlet.o RJupdates.o MHupdates.o likelihood.o read_write.o anyoption.o 
/bin/ld: cannot find -lpthread
/bin/ld: cannot find -lm
/bin/ld: cannot find -ldl
/bin/ld: cannot find -lpthread
/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status
make: *** [Makefile:4: bayescan_2.1] Error 1

这些库都可以在我椅子的计算集群上的/usr/lib64 中找到。但是 ld.so.conf 文件不包含仅指向 /usr/lib64 的路径,并且我没有管理员权限在 /etc/ld.so.conf.d/ 中创建新的 .conf 文件。

有什么方法可以强制 make 搜索 /usr/lib64 中的库吗?

这里是实际的 Makefile:

# BayeScan makefile

bayescan_2.1: start.o beta.o dirichlet.o RJupdates.o MHupdates.o likelihood.o read_write.o anyoption.o 
    g++ -fopenmp -static -lpthread -o bayescan_2.1 start.o beta.o dirichlet.o RJupdates.o MHupdates.o likelihood.o read_write.o anyoption.o 

start.o: start.cpp errors.cpp anyoption.h global_defs.h
    g++ -fopenmp -c start.cpp errors.cpp 

beta.o: beta.cpp global_defs.h
    g++ -fopenmp -c beta.cpp 
      
dirichlet.o: dirichlet.cpp global_defs.h
    g++ -fopenmp -c dirichlet.cpp 

RJupdates.o: RJupdates.cpp global_defs.h
    g++ -fopenmp -c RJupdates.cpp 

MHupdates.o: MHupdates.cpp global_defs.h
    g++ -fopenmp -c MHupdates.cpp 

likelihood.o: likelihood.cpp global_defs.h
    g++ -fopenmp -c likelihood.cpp 

read_write.o: read_write.cpp errors.cpp global_defs.h
    g++ -fopenmp -c read_write.cpp errors.cpp 

anyoption.o: anyoption.cpp anyoption.h 
    g++ -fopenmp -c anyoption.cpp 

clean: 
    rm *.o bayescan_2.1

【问题讨论】:

  • 使用 -L 选项指定库搜索路径。
  • 库通常需要放在命令行上需要它们的目标文件之后。

标签: c++ linux makefile


【解决方案1】:

只需将-L/usr/lib64 添加到链接命令。请参阅 GCC 手册中的 Directory Options

-Ldir

将目录dir添加到要搜索-l的目录列表中。

【讨论】:

    猜你喜欢
    • 2020-11-04
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多