所以我今天在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 回答
问题可能是使用
-static
. 我会得出结论,你没有安装libm
和libc
的静态版本 . 您可以尝试删除-static
进行确认 .-static
标志向编译器发出信号,表明您希望可执行文件完全静态链接,因此如果并非所有库都具有可用的静态版本,则会失败 .