【发布时间】:2011-08-06 03:22:57
【问题描述】:
我在 Windows 系统上有一个更新的 cygwin-full install ,mingw ,codeblocks 。 我有一个基于输入执行 xml 生成的 c++ 程序。
我知道要为 unix 构建一个可执行文件,我们使用 makefile。 makefiles 是典型的项目文件。 因此,我使用插件 cbp2make.exe 来获取 cbp 项目文件的 makefile。我试图在cygwin中执行make。希望得到一个linux可执行文件。但这显然是错误的。
一个典型的测试 c++ 测试程序 test.c 将在 cygwin 中使用 gcc 交叉编译选项进行编译。
g++-linux -o test test.c
这将为我们提供 linux 可执行文件 test,或者如果未指定名称,它将提供 a.out
对于一个没有包含头文件的简单 c++ 程序来说,这一切都很好。
我知道当我们处理包含大量外部库文件的 c++ 文件时,简单的g++ -o ourprojfile.exe ourprojectfile.cpp 不起作用,因此我们需要使用 make 文件。 问题 1:我的假设有误吗?*
问题 2:我们如何设置交叉编译以直接从代码块中获取 linux 可执行文件。
更新:我最后的问题似乎是缺少我认为我包含在主文件中的依赖 cpp 文件。 解决方案是将它们包含在主文件中,或者像这样简单地编写句柄
g++-linux myprog_linux main.cpp first.cpp second.cpp third.cpp
现在的问题是在我获得 Linux 可执行文件之后。 当我尝试在 linux 机器上运行它时,我得到一个错误
/usr/local/folder/myfile/my_prog_nix: error while loading shared libraries:
libstdc++.so.5: cannot open shared object file: No such file or directory
我需要什么样的链接来清除这个?
【问题讨论】:
-
交叉编译相当棘手和麻烦。由于您只是针对 linux,因此只需安装 linux 并在其上编译会更容易。你也可以只是一个虚拟机来安装 linux。
标签: c++ linux cygwin cross-compiling codeblocks