【发布时间】:2014-01-14 11:45:53
【问题描述】:
我一直在做一个项目,该项目将加载到嵌入式系统上,没有足够的内存/磁盘空间来安装 C++ 编译器和本地编译代码。
因此,我需要在我的开发(主机)机器上“交叉编译”代码,以便在目标机器(嵌入式 Linux)上使用。
与使用字符串和 iostreams 相关的问题,这是 C++ 标准模板库 (STL) 的一个特性。然而,由于内存在嵌入式系统中非常重要,标准模板库 (libstdc++) 无法在目标端使用。
我需要在主机上统计链接标准库,而不是在目标端动态链接。因此,在我的 Makefile 中,我需要在编译和链接步骤中进行稍微复杂的修改才能构建我的项目。
我在链接步骤中使用了一些参数,例如 -nodefaultlibs、-static-libstdc++ 和 -lstdc++,并且还在编译器标志中添加了 -nostdinc++。仍然存在目标方面的问题; “无法加载库 libstdc++.so.6”
我尝试过的大多数设置都不起作用。有什么解决办法吗?
【问题讨论】:
-
我认为您在尝试静态链接之前还为您的目标架构交叉编译了 libstdc++?
-
实际上,我打算交叉编译主机中的代码,而不为目标架构交叉编译任何标准 c++ 库(如 libstdc++ 库)。在主机中,我试图在目标端运行时链接统计的 c++ 标准库。
标签: c++ c cross-compiling