3

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

~/Projects/CPP/AssisterLib> g++ prog.cpp -o 程序 -static -L。- 妹妹
/usr/lib64/gcc/x86_64-suse-linux/4.6/../../../../x86_64-suse-linux/bin/ld:找不到-lm
/usr/lib64/gcc/x86_64-suse-linux/4.6/../../../../x86_64-suse-linux/bin/ld:找不到-lc
collect2: ld 返回 1 个退出状态

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

为什么 ld 找不到那些库?有没有我丢失的标志?

4

1 回答 1

3

问题很可能是使用-static. libm我会得出结论,你没有安装的静态版本libc。您可以尝试删除-static以确认。

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

于 2012-08-02T20:08:06.757 回答