加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

fsl-imx-xll-glibc交叉編譯boa服務(wù)器

2022/09/13
2254
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

第一次見這種形式的sdk安裝腳本:fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh 不過確實挺方便,把壓縮包和腳本組合在一起,方便使用。這個sdk安裝過之后,交叉編譯時遇到一些問題,這里記錄一下。這個也可以安裝在wsl里面,這樣可以不用虛擬機了。

安裝配置交叉編譯環(huán)境

他這個編譯器安裝比較簡單,直接運行這個腳本即可:默認(rèn)安裝到opt下面,我這個是安裝過一次了,所以會提示是否覆蓋。

sh fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh
Freescale i.MX Release Distro SDK installer version 4.1.15-2.1.0
================================================================
Enter target directory for SDK (default: /opt/fsl-imx-x11/4.1.15-2.1.0):
The directory "/opt/fsl-imx-x11/4.1.15-2.1.0" already contains a SDK for this architecture.
If you continue, existing files will be overwritten! Proceed[y/N]? y
Extracting SDK.........................................done
Setting it up...done
SDK has been successfully set up and is ready to be used.
Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g.
 $ . /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi

這樣就安裝成功了,最后提示的那一句:

. /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi

是配置環(huán)境變量用的,記得執(zhí)行一下,然后迅速碼出一個hello world來測試下交叉編譯器是否能夠正常使用:

#include <stdio.h>

int main(int argc, char **argv)
{
        printf("hello worldn");
        return 0;
}

編譯:
arm-poky-linux-gnueabi-gcc main.c
main.c:1:19: fatal error: stdio.h: No such file or directory
compilation terminated.

報錯了!找不到stdio.h頭文件,這可是C語言的基礎(chǔ)頭文件!提示找不到肯定還是環(huán)境變量的問題,這是需要指定sysroot的路徑,如下:

編譯命令加上sysroot
arm-poky-linux-gnueabi-gcc main.c  --sysroot=/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/

編譯錯誤:
In file included from /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/features.h:392:0,
                 from /opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/stdio.h:27,
                 from main.c:1:
/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/usr/include/gnu/stubs.h:7:29: fatal error: gnu/stubs-soft.h: No such file or directory
compilation terminated.

還是報錯,這個錯誤又不一樣了,說明還是有問題,經(jīng)過網(wǎng)上搜索發(fā)現(xiàn)還需要加編譯參數(shù),如下:

編譯命令:
arm-poky-linux-gnueabi-gcc main.c  --sysroot=/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/ -mfloat-abi=hard -mfpu=neon

這次沒報錯,ls查看一下,熟悉的a.out出來了
a.out main.c

到這里編譯環(huán)境算是搞好了。

交叉編譯boa

接下來編譯boa服務(wù)器,交叉編譯boa服務(wù)器,可以直接修改src/Makefile,修改內(nèi)容如下:

LDFLAGS :=  -g  -march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a7 --sysroot=/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/

LIBS =  
CFLAGS = -g -O2 -pipe -Wall -I. -march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a7 --sysroot=/opt/fsl-imx-x11/4.1.15-2.1.0/sysroots/cortexa7hf-neon-poky-linux-gnueabi/

 

記得這兩行都需要修改,否則還是會報錯: 

 

 然后就可以編譯了,編譯過程中如果提示bsion相關(guān)的錯誤,需要安裝bsion:

sudo apt-get install bison

如果出現(xiàn)lex 的錯誤,需要安裝fles

sudo apt-get install flex

更多錯誤參考這里吧:https://blog.csdn.net/zhangxuechao_/article/details/82821739

這樣boa就可以編譯完成了;

配置boa

如下圖是我整理的boa涉及到的文件,其中www用于存放網(wǎng)頁文件與cgi文件,boa是可執(zhí)行文件,boa.conf是boa的配置文件,這個文件需要放在/etc/boa/下面,mime.types放置的路徑可以在boa.conf里配置,www的路徑也可以在boa.conf里配置。

  

 

這里的install.sh是寫的一個簡單的安裝腳本:

#!/bin/sh
mkdir /var/log/
touch /var/log/boa
mkdir /usr/local/boa/
mkdir /etc/boa
cp boa /usr/local/boa/
cp mime.types /usr/local/boa/
cp boa.conf /etc/boa/
cp www /usr/local/boa/ -fr
echo "done."

啟動boa時,有時會遇到權(quán)限問題,可以修改對應(yīng)文件的所有者權(quán)限即可。

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄