Matlab卡尔曼 /usr/bin/ld: 找不到-lstdc++。

34
我正在遵循 Matlab 帮助文档中 kalman 教程。在使用 codegen 时,出现以下错误:

/usr/bin/ld: 找不到 -lstdc++

collect2: ld 返回了 1 个退出状态

然而,在 /lib//usr/lib 目录下都有 libstdc++.so.6 文件。


你用什么命令编译代码的?另外,源代码是C++还是C? - Benjamin Bannier
使用MATLAB Codegen命令,生成kalman02.m的报告,并指定参数{z}。 - bitcold
1
可能是32/64位的问题。你用的是什么系统? - n. m.
1
好的,那就解释了。你需要安装32位库或使用-m64编译器标志。 - n. m.
5个回答

62
对于Fedora 16,请使用:
sudo yum install libstdc++-static

2
在 Fedora 21 上解决了我的问题。谢谢! - Michael Hampton
1
相同的代码,在Ubuntu上可以工作,但在Fedora上需要以上所述的内容。 - Max
“build-essential” 不是已经包含了所有的东西吗? - IgorGanapolsky
1
@IgorGanapolsky build-essential 是 Ubuntu 的一个软件包。OP 使用的是 Fedora。 - Qsiris
我在Centos 7.5中也需要这个。 - Galder Zamarreño
运行 sudo dnf install libstdc++-static 拯救了我的生命。谢谢。 - Tomás Ferrer

13

您可以将库软链接到所需的名称上

ln -s /usr/lib/libstdc++.so.6 /usr/lib/libstdc++.so


5
针对 Ubuntu 14,尝试执行以下命令:ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /usr/lib/x86_64-linux-gnu/libstdc++.so - Nathan Moinvaziri

6

我使用sudo apt-get install g++-4.7 命令,成功为Matlab安装了所需的工具。


5

如果你在 64 位 CentOS 7 上编译一个 32 位 应用程序:

sudo yum install libstdc++-devel.i686

3
根据这个网站(http://tech.yipp.ca/compile-error/install-libstdc-for-32-bit-on-64-bit-centos/)的指示,我发现命令:`sudo yum install libstdc++-static libstdc++-static.i686`更为适宜。在我的机器上尝试过并且成功了。 - rph

1

对于CentOS,请确保您已安装gcc-c++包(它包含libstdc++-devel依赖项):

sudo yum install gcc-c++

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接