【问题标题】:Apache Cross Compilation Error ./gen_test_char: cannot execute binary fileApache 交叉编译错误 ./gen_test_char:无法执行二进制文件
【发布时间】:2013-08-26 20:00:48
【问题描述】:

我花了很长时间才找到解决此错误的方法。当尝试为 Arm 交叉编译 Apache 时(我确信这可能会发生在许多其他架构中),我会从服务器文件夹中得到这个错误:

 ./gen_test_char: cannot execute binary file

这意味着 Apache 正在尝试为实际设备编译这个 test_char.h 生成器,而我需要它在我正在交叉编译的 Ubuntu 上运行。 Ubuntu 无法将编译后的 gen_test_char 识别为可执行文件,因此我需要为 Ubuntu 正确编译它。

【问题讨论】:

    标签: c++ apache ubuntu arm cross-compiling


    【解决方案1】:

    我搜索并搜索并找到了几次尝试修补,但都没有奏效。其中大部分是 Apache 开发组直接建议的补丁。

    但我终于遇到了这个Apache mail list。它提出了补丁无法提供的直接解决方案。

    在尝试交叉编译 Apache 之前编译 gen_test_char 应用程序。所以我做了。并遵循建议,它就像一个魅力。

    而不是只编译 gen_test_char.c 1st ,如下所示: gcc -Wall -O2 -DCROSS_COMPILE gen_test_char.c -s -o gen_test_char 然后运行它并将其输出放入包含文件夹(或其所在的位置) 正常放置);

    在编译后运行它以获得所需的输出:

     ./gen_test_char > test_char.h
    

    【讨论】:

    • 我必须将test_char.h 复制到apr-1.6.5/include/private/apr_escape_test_char.h 才能使make 成功
    【解决方案2】:

    这些是基于 CaptainBli 在他的答案中链接的 Apache Mailing list 对我有用的具体步骤。我在 x86_64 机器上为 ARM 进行交叉编译。

    首先,配置并运行 make 进行交叉编译。一旦由于 gen_test_char 可执行文件问题而导致编译失败,请进入 tools/ 文件夹并为您的构建系统重新编译 gen_test_char:

    $ pwd
    .../apr-1.7.0
    $ cd tools/
    $ gcc -Wall -O2 -DCROSS_COMPILE gen_test_char.c -s -o gen_test_char
    

    现在,像之前一样运行make,它将从上次中断的地方开始,但这次它将使用为在您的构建系统上运行而构建的gen_test_char 可执行文件。 不要先运行make clean - 这将清除您刚刚构建的可执行文件,您将回到原点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-07
      • 2011-04-14
      • 1970-01-01
      • 2018-03-07
      相关资源
      最近更新 更多