首页 文章

如何告诉ld在哪里找到libc

提问于
浏览
3

所以我今天在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 -lc
collect2: ld returned 1 exit status

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

为什么不能找到那些库?有没有我失踪的旗帜?

1 回答

  • 3

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

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

相关问题