2011-10-10 30 views
0

我有一个可以工作的uclibc工具链。我可以静态编译一个简单的hello.c程序(arm-linux-gcc hello.c -o hello -static -s),但源代码包会自动编译。我如何将默认值更改为静态?如何使用uclibc做静态构建

回答

0

您必须编辑正在编译的源数据包的生成文件(额外的LDFLAG静态,就像您对hello.c文件所做的那样)。大部分时间源数据包都是通过autoconf传递的。在这种情况下,你可以通过--enable-static-link标志来配置。请参阅configure --help以获取可能的参数集。

其他注意事项:交叉编译需要其他库的软件包时要小心。您不希望静态链接主机数据库。

+0

编辑Makefile时我仍然得到一个动态链接的prog。使用CFLAGS编译lighttpd = -g -O2 -Wall -W -Wshadow -pedantic -std = gnu99 -static结果如下:文件src/lighttpd:ELF动态链接(使用)的32位LSB可执行文件,ARM版本1(SYSV)共享库),对于GNU/Linux 2.6.16,没有剥离。编译joe编辑器会得到相同的结果。 – jocala

+0

我的不好,你应该寻找LDFLAGS,其中包含链接的标志和添加静态。 – Michel

+0

谢谢。它仍然无法正常工作,所以我正在调查我的工具链是否存在问题。我认为这很简单:( – jocala