gpt4 book ai didi

c++ - 如何告诉 ld 在哪里可以找到 libc

转载 作者:太空狗 更新时间:2023-10-29 21:26:23 33 4
gpt4 key购买 nike

所以我今天用C++创建了一个带有一些基本辅助功能的静态库。我用 Clang 3.2(SVN 快照)构建了它。但是,当我尝试运行链接到它的测试程序 (prog.cpp) 时,出现以下错误:

~/Projects/CPP/AssisterLib> g++ prog.cpp -o program -static -L. -lassister/usr/lib64/gcc/x86_64-suse-linux/4.6/../../../../x86_64-suse-linux/bin/ld: cannot find -lm/usr/lib64/gcc/x86_64-suse-linux/4.6/../../../../x86_64-suse-linux/bin/ld: cannot find -lccollect2: ld returned 1 exit status

我在使用 G++ 和 Clang++ 时遇到同样的错误。显然它找不到 libc.a 和 libm.a,它们都在/usr/lib64 中(由 OpenSUSE 中的 glibc-devel 提供)。添加 -L/usr/lib64 对错误没有任何作用。

为什么 ld 找不到那些库?是否有我缺少的标志?

最佳答案

问题可能出在 -static 的使用上。我会得出结论,您没有安装 libmlibc 的静态版本。您可以尝试删除 -static 以确认。

-static 标志向编译器发出您希望您的可执行文件完全静态链接的信号,因此如果不是所有库都有可用的静态版本,它就会失败。

关于c++ - 如何告诉 ld 在哪里可以找到 libc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11782495/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com