linux开源库交叉编译报错总结

开源库编译选项说明

源码包的安装过程:
在Linux系统中,源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)

./configure --prefix --with ; 其中–prefix指的是安装路径,–with指的是安装本文件所依赖的库文件
with:指定依赖
–with-依赖包名称=依赖包目录
–with-apxs:是指定apache的配置程序路径
–with-libxml-dir:指向的是 libxml 的库路径
–with-gd:指静态编辑gd库
–with-png-dir:指定 libpng 的路径

综上,带着-dir的一般是用于指定库文件路径,没有的话可能是启动某些特性或者指向某特定路径。

注:当不指定prefix时,则可执行文件默认放在/usr/local/bin,
库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc。其它的资源文件放在/usr /local/share。
如果要卸载这个程序,要么在原来的make目录下用一次make uninstall(前提是make文件指定过uninstall),要么去上述目录里面把相关的文件一个个手工删掉。

指定prefix,直接删掉一个文件夹就够了。
(把安装路径配置为根目录。你接下来运行make和make install后,就可以在根目录下找到所安装的文件)

./configure的解释:
./configure的作用是检测系统配置,生成makefile文件,以便你可以用make和make install来编译和安装程序。
./configure是源代码安装的第一步,主要的作用是对即将安装的软件进行配置,检查当前的环境是否满足要安装软件的依赖关系,但并不是所有的tar包都是源代码的包,
可先通过ls,查看有没有configure或者makefile文件
如果 有configure,执行./configure,包含很多配置参数,如果系统环境合适,就会生成makefile,否则会报错。
如果有makefile,就直接make,然后make install。

build: 自动测试在用平台名称,若无法检测出来则需要指定。
host: 若无指定,自动使用build的结果。
   build和host相同时表示本地编译,若不相同则表示交叉编译。
target: 表示需要处理的目标平台名称,若无指定使用host相同名称,gcc、binutils等于平台指令相关软件有此参数,多数软件此参数无用处。
综合的例子:
我们需要在x86下编译一个运行于arm上的编译器gcc,这个gcc产生mips平台的目标代码。那么我们的配置方式是:
–build=x86 --host=arm --target=mips

**

开源库编译报错总结

**

使用64位交叉编译工具报错 machine `aarch64-mix210’ not recognized

在这里插入图片描述
解决:替换库源码中的 config.sub文件和 config.guess
下载此文件命令:
wget -O config.guess ‘http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD’
wget -O config.sub ‘http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD’

使用64位交叉编译工具报错 error: architecture aarch64 is not supported by strace

linux开源库交叉编译报错总结_第1张图片

编译libpng.so报错

编译报错:bin/ld: cannot find -lz
在这里插入图片描述
交叉编译工具路径下,缺少libz库
解决:将之前编译出的libz.so库拷贝到交叉工具链路径下
在这里插入图片描述

报错:CMakeLists.txt" used to generate cache

The current CMakeCache.txt directory 。。。is different than the directory。。。 where CMakeCache.txt was created. This may result in binaries being created in the wrong place. If you are not sure, reedit the CMakeCache.txt
在这里插入图片描述
解决办法:删除CMakeCache.txt文件,重新运行命令cmake .即可编译成功

持续更新中……

你可能感兴趣的:(Linux应用,linux,嵌入式)