Gcc 在g+;中找不到-lc和-lm+;linux

Gcc 在g+;中找不到-lc和-lm+;linux,gcc,include,g++,Gcc,Include,G++,我正在使用ubuntu、gcc和g++,它们工作得很好,但今天它显示: cannot find -lm cannot find -lc 我搜索发现它与/usr/bin/ld有关。这是(我希望)到lbd.bdf的符号链接。我把那个文件粘贴到了一些朋友电脑的ubuntu目录中。它不起作用 我发现-lc意味着包括静态库libc.a. 类似地,对于-lm 我在我的i386linux文件夹中找到了它们(名称有所不同) 我尝试了代码块,但出现了相同的错误。确保您的libpath(g++)指向libm.a和

我正在使用ubuntu、gcc和g++,它们工作得很好,但今天它显示:

cannot find -lm
cannot find -lc
我搜索发现它与
/usr/bin/ld
有关。这是(我希望)到
lbd.bdf
的符号链接。我把那个文件粘贴到了一些朋友电脑的ubuntu目录中。它不起作用

我发现
-lc
意味着包括静态库libc.a.
类似地,对于
-lm

我在我的
i386linux文件夹中找到了它们(名称有所不同)


我尝试了代码块,但出现了相同的错误。

确保您的libpath(g++)指向libm.a和libc.a所在的目录(使用-L选项)

ld
是GNU链接器

man-ld
ld组合了许多对象和归档文件,重新定位了它们的数据,并绑定了符号引用。通常编译程序的最后一步是运行ld

它用于将程序与C库和C数学库链接。您需要确保安装了
libc6 dev

foo@bar: $ dpkg -s libc6-dev
或者更一般的,确保
构建essential
,这取决于少数essential C包

foo@bar: $ dpkg -s build-essential

编译器找不到静态glibc,您可能只安装了共享库
试试


yum-install-glibc-static

如何查看我的g++当前libpath?@KevinDTimm我以前从未这样做过,而且效果很好。。。现在需要什么?始终执行g++-o输出文件名cpp文件名。工作正常。您的库路径被弄脏了(请参阅搜索库路径)。如果liba和libm不在默认位置,则存在更大的问题。设置-L不太可能有帮助。如果我听起来像那样,我很抱歉。。但我认为你对图书馆之路的看法是正确的。echo${LIBRARY\u PATH}未显示任何内容。libc.a位于/usr/lib/i386 linux gnu/libc.a/usr/lib/i386 linux gnu/xen/libc.a,libm.a位于/usr/lib/i386 linux gnu/libm.a/usr/lib/i386 linux gnu/xen/libm.a您的g++命令行是什么?重新安装开发包(例如,aptitude删除基本构建;重新启动;aptitude安装基本构建)@KevinDTimm g++-o输出文件名cpp文件名注意,OP没有
ld
的概念。当你只谈论
ld
时,你有责任向他解释这些(
g++
ld
)是如何相互关联的。@KevinDTimm:libpath也是如此,是吗?嗯,我不知道OP编程和*nix有多少已经了解,但是如果你得到一本C++基础的书,它通常会在编译之后(基本上是预处理、编译、链接)的概念。我认为如果你读了这本书,那么读《代码》是一个链接器,它已经有帮助了。