交叉编译nginx-1.0.11

时间:2012-01-19 07:14:03

标签: linux linux-kernel embedded-linux archlinux

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

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

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

- with-cc-opt也无效。 我也尝试手动更改编译器(通过更改Makefile)。

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

任何帮助将受到高度赞赏.. 提前致谢。 :)

5 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

答案 4 :(得分: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

- 前缀nginx在./nginx中安装,只需要在设备上移动已创建的nginx文件夹,但必须从相对路径启动服务器。

./nginx/sbin/nginx