【发布时间】:2010-07-29 02:14:02
【问题描述】:
以下是描述我的问题的示例:
ld -Lpath1 -Lpath2 -lA -lB -Xlinker -T -Xlinker \
-W1,-rpath,/usr/local/lib -l-o target
ld: cannot find -lA
collect2: ld returned 2 exit status
path1和path2都是相对路径,我可以根据ld的pwd找到库A,那为什么ld输出这个错误msg呢?
谁能给我一些调试这个问题的建议?
我想念一些,在一个名为 rt 的库之前有一个“-static”。
根据您的建议,我尝试让 gcc 驱动 ld 进行链接过程。 gcc A.o B.o -mabi=64 -static -lrt -Xlinker -T -Xlinker ld.script -W1,-rpath,/usr/local/lib -lmemdbg -o target 它不起作用。
然后我删除“-static”选项,以及-lpthread之后的另一个动态库(因为rt依赖于我删除“-static”时找到的pthread)
gcc A.o B.o -mabi=64 -lrt -lpthread -Xlinker -T -Xlinker ld.script -W1,-rpath,/usr/local/lib -lmemdbg -o target 这一次,对象被成功链接在一起。
然后我尝试通过将“-v”传递给gcc来找出“-static”命令不起作用的原因 .出现了一些“-L”选项,并在搜索列表中找到了一个名为 librt.a 的库。
我真的很困惑。 gcc的版本是4.3
【问题讨论】:
标签: unix build-process ld