3

我想知道如何交叉编译 nginx-1.0.11。

我已经尝试过:--with-cc 选项,但它给了我一个错误:检查 C 编译器...找到但不工作

./configure: 错误:找不到 C 编译器 arm-linux-gcc

--with-cc-opt 也不起作用。我也尝试手动更改编译器(通过更改 Makefile)。

我已经安装了 arm-linux-gcc 并且它与 openssl 一起工作正常(它成功交叉编译了 openssl。所以问题不在于 arm-linux 编译器)。

任何帮助将不胜感激..提前致谢。:)

4

5 回答 5

1

我为我的 ia32 Linux 主机运行 ./configure 并构建它(以确保它正常工作),然后 1)删除所有目标文件,2)编辑 objs/Makefile 以更改 CC 的值,为我的编译器添加包含路径和我的链接器的库路径 3) 将一些头文件从 /usr/include 复制到本地目录

有一个问题是,如果 /usr/include 在搜索路径中,则会在我的编译器的头文件之前搜索它。当 x86 汇编程序指令被引入 htonl() 的定义时,这成为一个问题。

另一种方法是破解 conf/cc/gcc 以添加一个选项并在那里进行配置,包括支持 CROSS 的 shell 变量。我还没有这样做。

于 2012-02-21T18:39:06.887 回答
1

我只是以这种方式构建 v 1.4.7

./configure --with-ld-opt=-L/path/to/libfolder \
   --with-cc-opt=-I/path/to/include  --prefix=./nginx
make CC=arm-linux-gnueabi-gcc
make install

--prefix nginx 将所有内容安装在 ./nginx 中,只需移动设备上创建的 nginx 文件夹,但必须从相对路径启动服务器。

./nginx/sbin/nginx
于 2014-03-31T09:54:03.963 回答
1

我通过首先在我的桌面机器上创建一个配置(./configure --without-pcre --without-http_rewrite_module)成功地交叉编译了 nginx,然后只需在 /objs/Makefile 中编辑“cc”命令以指向正确的 gcc . configure 生成的 Makefile 非常简单。只需确保所有环境变量都设置正确(CC、LD、LIBS 等)

于 2013-10-15T16:23:42.080 回答
1

没有简单的答案。nginx 有自己的非 autoconf 配置系统,目前不支持交叉编译。

要么破解或避免配置系统,要么等到 nginx 添加对交叉编译的支持。

请参阅最近讨论过该问题的http://forum.nginx.org/read.php?29,220607 。

于 2012-01-31T22:15:56.227 回答
1

您是否考虑过设置 QEMU - http://wiki.qemu.org/Main_Page和来自 linaro 的轻量级图像 - http://www.linaro.org/。我没有测试过这种方法,但我可以告诉你,我已经在我的 Pandaboard ARM v7a 上成功编译并运行了 nginx。

于 2012-05-05T00:37:55.073 回答