库的编译


一,缺失:

编译工具肯定也要移植的

如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的,那么就用交叉工具链的前缀)





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值