嵌入式 lnmp搭建的记录
文章比较水,并没有没解决什么实际问题,有点不好意思发布。但好像又记录了不少交叉编译配置的思路,所以还是记录下来,希望有更多大佬能给支支招,共同进步!
一些交叉编译的配置环境思路分享:
想指明第三方库所在路径,有四种方法:,
- 1,添加xx.pc文件路径
export PKG_CONFIG_PATH=/xxx:$PKG_CONFIG_PATH
指定搜索路径export LD_LIBRARY_PATH=/yourdir/:$LD_LIBRARY_PATH - 2,在 /etc/ld.so.conf 文件中添加库的搜索路径。将库文件的绝对路径/lib直接写进去就OK。
- 3,丢到编译器的默认搜索路径。使用
arm-前缀-gcc -print-file-name=libpthread.so来找到编译器的默认路径 - 4,在configure阶段,添加
-LDFLAG增加编译选项给编译器直接增加搜索路径
P:php
这里我用的是php7-2.15 点击官网下载其他版本
由于我这里需要用到许多库libxml、iconv、curl、gd、gmp…,然后网上暂时没找到嵌入式linux版本的一键环境安装…所以只能硬着头皮一个个去交叉编译再包含进configure里。
我的流程是这样的:
根据需要的库,去点我点我官方文档里面搜索对应的库,


然后点开安装 或者需求 ,一般都会给对应库的下载路径(爱了爱了!省去多少找源码的麻烦!)

下载了源码之后,就好办了,我用的是笨方法,一个个写脚本configure交叉编译
比如libxml 的交叉编译:
#!/bin/bash
./configure \
--prefix=$PWD/1_libxml2-dom_install \
--host=arm-himix200-linux \
--with-tree \
--with-python=$PWD/python \
CC=arm-himix200-linux-gcc \
CPP=arm-himix200-linux-cpp \
编译PHP可能遇到的问题
编译PHP可能会遇到很多麻烦,首先先看config.log 日志查找原因。由于我这里库太多,全部记录上不太现实,我慢慢记录遇到的比较有代表性的问题吧。
configure阶段:
1:找不到编译好了的依赖库。
在移植libgd库的时候,因为它需要libjpeg、libpng、libzlib等依赖前置库,所以先编译它们仨。然后在配置的脚本里–with-jpeg 的时候,总是提醒说找不到库。
后面configure的配置日志,看到了解决方法

很明显,configure脚本没能找到我提供的交叉编译好的库,只能手动给环境变量PKG_CONFIG_PATH 添加我libjpeg、libpng、libzlib这些库的lib/pkgconfig/xxx.pc ,这个.pc 文件指明了对应库的头文件和lib库文件存在的路径。
既然只用这一次,那就用作临时环境变量就行:
#!/bin/bash
export PKG_CONFIG_PATH=/home/ouser/himix200-disk/php_nginx/src_tmp/zlib-1.2.11/1_zlib_install/lib/pkgconfig/:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/home/ouser/himix200-disk/php_nginx/src_tmp/jpeg-9d/1-jpeg/lib/pkgconfig/:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=$PWD/freetype-2.10.1/1-TARGET/lib/pkgconfig/:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/home/ouser/himix200-disk/php_nginx/src_tmp/libpng-1.6.37/1-TARGET/lib/pkgconfig/:$PKG_CONFIG_PATH
echo $PKG_CONFIG_PATH
./configure \
--prefix=$PWD/1-libgd \
--host=

本文详细描述了在嵌入式Linux环境下使用lnmp搭建时,如何进行跨平台编译PHP及其依赖库,包括配置环境、解决configure阶段和Makefile阶段遇到的问题,如库路径指定、依赖库编译和Nginx的特殊处理等。
最低0.47元/天 解锁文章
1557

被折叠的 条评论
为什么被折叠?



