旧版交叉编译功能意外消失了,我怎么知道发生了什么?

时间:2019-04-12 22:22:32

标签: linux gcc cmake cygwin cross-platform

我在非常受限的环境中进行开发。由于官僚主义的原因,我需要执行以下操作:

(1)在Windows上为Linux目标编译可执行文件;

(2)这样做无需安装新软件或软件包;

(3)通过Cygwin命令终端这样做。

这些是我绝对无法更改的固定常数。

以前,出于我无法解释的原因,Cygwin默认使用Linux目标进行编译,并且我能够无问题地维护此过程。研究此问题后,我不确定它是如何默认为这种行为的。

但是,今天早些时候,我引入了一个同事的脚本来简化构建过程,将CMakeFiles和CMakeCache.txt放置在构建目录中而不是在项目文件夹中。作为其一部分,我原来的CMakeFiles和CMakeCache目录丢失了。

然后,我尝试将CC和CXX路径手动导出到编译器进行编译,尝试在计算机上找到的每个* gcc.exe和* g ++。exe可执行文件。我知道,大多数(如果不是全部)跨平台编译工具都以Linux的名称标记了交叉编译可执行文件,但在任何Cygwin驱动器位置均未找到此类文件。

我另外注销并让另一个用户登录以尝试构建,但是结果是相同的。

我尝试还原仍在回收站中的CMakeFiles和CMakeCache文件,但是重用那些无效的文件。

我所知道的:

  1. 在Cygwin中有一个/ opt / gcc-tools /目录,该目录不包含gcc可执行文件,但是在将项目初始安装到系统中时,有人在弄乱它。 / opt /目录中没有其他已安装的文件或程序。

  2. 将CC和CXX路径设置回null会导致CMake默认设置为/ usr / bin / cc和/ usr / bin / c ++。这些文件没有Linux版本。

  3. MinGW已安装,我不确定它是否与跨平台异常有关。

  4. 在Cygwin的usr / share / cmake / modules / platform部分中,有各种LINUX- {GNU / INTEL / CLANG} .cmake文件。这些可能只是用于检查交叉编译,但是如果可以对其进行编辑以使事情正常进行,我将不会提出异议。

我的build.sh文件如下所示:

export CC=/usr/bin/gcc.exe
export CXX=/usr/bin/gcc.exe

pushd build > /dev/null

cmake ..
make all install -j8


popd /dev/null

并且以前很简单

cmake .
make

不安装或-j8

我意识到,在不访问终端和系统的情况下,这是一个很难调试的问题。我的一个目标是让cmake再次吐出a.out文件而不是a.exe文件。希望这将阐明该系统最初在该过程中的工作方式。

0 个答案:

没有答案