Flowers_World
分类: 嵌入式
2014-11-30 20:51:30
一:开发环境
主机开发环境: VMWARE 下安装的 UBUNTU 10.04
gcc编译器: ubuntu自带的,version 4.4.3
开发板: ATMEL AT91SAM10
交叉编译器 arm-linux-gcc version 4.4.3
二:移植步骤
参考资料:http://blog.chinaunix.net/uid-21143149-id-1830088.html
编译Apache总体上需要两个步骤:
1.编译本机代码(PC版本)
2.利用本机代码进行交叉编译(ARM版本)
这是因为在编译Apache时,交叉编译工具没法在本地运行,因此需要本地编译生成的工具
从 上下载 apache1.3.39 源码
PC 版本 用GCC 编译 :
1. 在/opt/webserver/pc目录下解压: tar zxvf apache1.3.39.tar.gz,然后切换到root用户模式:sudo su,方便后续操作。
2. 进入到 /opt/webserver/pc /apache1.3.39/src目录下执行 ./Configure 命令(大写C),生成Makefile文件。
3. 返回到 /opt/webserver/pc /apache1.3.39目录下,执行 ./configure命令(小写c),生成Makefile文件。
4. 然后 make一下。在主机上不需要make install.因为交叉编译的时候,只需要用到主机编译的在 ../src/main 目录下生成的两个可执行文件。gen_test_char 和 gen_uri_delims.
在本机编译中经遇到一个问题,configure时会报出以下错误而暂停。
Configuring for Apache, Version 1.3.39
+ Warning: Your ‘echo’ command is slightly broken.
+ It interprets escape sequences per default. We already
+ tried ‘echo -E’ but had no real success. If errors occur
+ please set the SEO variable in ‘configure’ manually to
+ the required ‘echo’ options, i.e. those which force your
+ ‘echo’ to not interpret escape sequences per default.
+ using installation path layout: Apache (config.layout)
Creating Makefile
Creating Configuration.apaci in src
Syntax error — The configuration file is used only to
define the list of included modules or to set Makefile in src
options or Configure rules, and I don’t see that at all:
`$(SRCDIR)/apaci`
default
default
no
no
no
yes
no
default
no
default
default
这是由于某些shell脚本文件使用了错误的interpreter,使用下面的命令就可以解决。
# rm -f /bin/sh
# ln -s /bin/bash /bin/sh
1. 需要重新建立一个目录,如在/opt/webserver/arm目录下。然后通过 cp 命令把软件包拷贝到该目录下,解压 tar zxvf apache1.3.39.tar.gz
2. 进入到 /opt/webserver/arm/apache1.3.39/src/目录下,执行:export CC=arm-linux-gcc,目的是更新环境变量(前提是以安装好交叉编译器,可以通过命令arm-linux-gcc -v查看是否安装好交叉编译环境),之后在该目录下执行 ./Configure 生成Makefile文件。
3. 把在主机上用gcc编译过的生成的(/opt/webserver/pc /apache1.3.39/src /main目录下) 两个可执行文件gen_test_char 和 gen_uri_delims. 覆盖用arm-linux-gcc编译过的,在目录
/opt/webserver/arm /src/main下的两个文件。
4. 在/opt/webserver /arm/apach1.3.39目录下,执行:export CC=arm-linux-gcc,然后 ./configure 一下,生成Makefile文件
5. 之后就是用make 命令编译整个文件,之后就是用命令make install 安装此服务器了。最后提示你
+--------------------------------------------------------+
| You now have successfully built and installed the |
| Apache 1.3 HTTP server. To verify that Apache actually |
| works correctly you now should first check the |
| (initially created or preserved) configuration files |
| |
| /usr/local/apache/conf/httpd.conf
| |
| and then you should be able to immediately fire up |
| Apache the first time by running: |
| |
| /usr/local/apache/bin/apachectl start
| |
| Thanks for using Apache. The Apache Group |
| |
+--------------------------------------------------------+
服务安装成功。可能在执行安装的时候,你的权限不够,得用根用户,在ubuntu下,用sudo命令获得根用户权限就行了。因为此服务程序安装在/usr/local目录下的。
6. 把在 /usr/local/下生成的目录 apache拷贝到你的开发板根文件系统的 …/usr/local/ 目录下。
7. 修改配置http.conf文件。在…/usr/local/apache/conf/ 目录下,用文本编辑器打开。
还有注意的是,apache拒绝使用root用户运行。所以你需要增加一个用户和用户组,我们可以使用 http.conf配置文件默认的用户名和用户组名,nobody和nobody。具体来说就是在ARM Linux根文件系统上建立/etc/passwd和/etc/group两个文件,它们的内容可以如下:
/etc/passwd
root::0:0:root:/:/bin/ash
nobody::65534:65533:nobody:/:/bin/ash
/etc/group
nobody::65533:
nogroup::65534:nobody
root::0:
users::100
如果rootfs中有这两个文件,那么就只需要检查一下是不是有nobody用户和nogroup组。
关于http.conf的配置见其最后。
8.配置完之后,将 httpd 应用程序 拷贝到 /usr/sbin 文件夹下并 设置其为 开机自启动。向 /etc/init.d/rc 文件 最后 添加 命令 httpd
重新制作并烧写 文件系统。
制作文件系统命令:mkfs.jffs2 -l -s 0x800 -e 0x20000 -p 0x4000000 -d mtd/ -o fs-image-apache-glibc-at91.rootfs.jffs2
重启开发板。
然后你就可以在你的浏览器下面输入你的开发板 IP地址,这样你就可以看见一个测试网页了。