LINUX-ARM下的交叉编译学习

  • 编译和链接

一般来说,无论是C、C++、还是pas,首先要把源文件编译成中间代码文件,在Windows下也就是.obj文件,UNIX下是.o文件,即ObjectFile,这个动作叫做编译(compile)。然后再把大量的ObjectFile合成执行文件,这个动作叫作链接(link)。
总结一下,源文件首先会生成中间目标文件,再由中间目标文件生成执行文件。

- 交叉编译

简单地说,就是在一个平台上通过交叉编译工具编译、链接生成可以再另一个平台上运行的可执行代码。

  • 一、 安装交叉编译器

1.在Linux虚拟机中设置Linux Arm平台的交叉编译环境。
使用的编译器为:arm-linux-gnueabihf-gcc和arm-linux-gnueabihf-g++
注意:还有一类编译器为arm-linux-gnueabi-gcc和arm-linux-gnueabi-g++理论可用,但实际操作中发现,使用该编译器编译后的可执行文件在我们的板子上不能正常跑,原因暂不明。
(1) 安装交叉编译器

sudo apt-get install gcc-arm-linux-gnueabihf

在这里插入图片描述

sudo apt-get install g++-arm-linux-gnueabihf

在这里插入图片描述

(2) 设置交叉编译变量

vi ~/.bashrc

弹出如下界面:
在这里插入图片描述

按“↓”直到页面最底端,输入“i”后显示插入,然后回车换行准备输入:

export CROSS_COMPILE=arm-linux-gnueabihf-

如图:
在这里插入图片描述
然后,输入“:wq”保存并退出
可以输入

ls -alt /home/iris

可以在根目录下看一个“.swo”文件即为生成的文件。
在这里插入图片描述

(3) 检查交叉编译变量的设置是否生效
加载.bashrc文件

source ~/.bashrc

查看交叉编译变量设置结果

echo $CROSS_COMPILE

出现如图所示则表示设置成功
在这里插入图片描述
安装交叉编译器时,出现问题如下所示:
在这里插入图片描述
解决方法:
方法一:终端输入 ps aux ,列出进程。找到含有apt-get的进程,直接sudo kill PID。
方法二:强制解锁,命令

sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock

实际操作:使用方法二,强制解锁一次后问题依然,再执行一遍强制解锁后OK。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
arm-linux交叉编译Apache和PHP的步骤如下: 1. 首先安装交叉编译工具链,例如arm-linux-gcc等工具链。 2. 下载Apache和PHP源码,解压缩到指定目录。 3. 进入Apache源码目录,执行configure命令,指定交叉编译工具链的路径和其他相关参数,例如: ``` ./configure --host=arm-linux --prefix=/usr/local/apache2 --enable-so --disable-ssl --disable-proxy --disable-authn-file --disable-autoindex --disable-dir --disable-env --disable-reqtimeout --disable-userdir --disable-setenvif --disable-status --disable-cgi ``` 其中,--host参数指定目标平台的架构,--prefix参数指定安装目录,--enable-so参数指定支持动态链接库等。 4. 执行make命令编译Apache,然后执行make install命令安装Apache到指定目录。 5. 进入PHP源码目录,执行configure命令,指定交叉编译工具链的路径和其他相关参数,例如: ``` ./configure --host=arm-linux --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --disable-debug --enable-mbstring --enable-zip --enable-bcmath --enable-sockets --enable-pcntl --enable-shmop --enable-sysvmsg --enable-sysvsem --enable-sysvshm --with-curl --with-gd --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-zlib-dir=/usr/lib --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --without-pear ``` 其中,--with-apxs2参数指定Apache的apxs路径,--with-curl参数指定支持curl库,--with-gd参数指定支持gd库等。 6. 执行make命令编译PHP,然后执行make install命令安装PHP到指定目录。 7. 在Apache的配置文件httpd.conf中添加PHP的模块加载语句,例如: ``` LoadModule php7_module modules/libphp7.so AddType application/x-httpd-php .php ``` 其中,libphp7.so是PHP编译生成的动态链接库。 8. 重启Apache服务器,测试PHP是否正常工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值