一,缺失:
编译工具肯定也要移植的
如libstdc++ :这种在交叉工具链的arm-none-linux-gnueabi的lib文件夹里有,移植即可
可在编译环境添加库
可在编译工具里添加库
甚至可以将库源码放在需要编译的库里
注意依赖库不要有版本冲突
库编译后运行时依赖的库版本跟编译器有关,如果过高可选择低版本编译器来编译
实在不行可以换个版本的开源库编译
编译前可以在外部设置环境变量,如下例子:
export CC=arm-none-linux-gnueabi-gcc
export AR=arm-none-linux-gnueabi-ar
export LDFLAGS="-L/home/edison/abel/printer/abel/lib"
export CFLAGS="-I/home/edison/abel/printer/abel/include" (C的依赖的头文件)
export CPPFLAGS=-I/home/edison/abel/printer/abel/include (CPP的依赖头文件)
export LIBS=-L/home/edison/abel/printer/abel/lib
不过这样有时Makefile原有的连接配置还会保存,所以再加上新的路径会冲突,所以得进入makefile删除原来的
最好还是在.configure 配置,然后进入makefile里看会不会冲突,特别是当编译时出现依赖路径不是自己指定的话更要进入makefile里看
或者可以把需要的库编译并安装在某个文件夹下,然后编译库时指定这些库安装的路径来依赖
如果有时候找不到库是因为自己有的库版本且版本高的话,可以用个软连接,用低版本的名字链接高版本的库
有时候编译的时候库是安装的,通过apt也是最新的,这时候可以通过指定决定路径来解决
如configure: error: could not find GNU libtool >= 1.5.26 通过--with-libtool=/usr/share/libtool 解决
二,选项
1. 一般编译选项里,有enabl的选项都可以disable,反之亦然
2.
--build=编译该软件所使用的平台
--host=该软件将运行的平台
--target=该软件所处理的目标平台,类似交叉工具链,运行于PC,但编译的目标是ARM
一般指定的目标是需要使用编译工具链的前缀名(target也是,如果运行处理的目标是ARM的,那么就用交叉工具链的前缀)