库的编译
来源:互联网 发布:国家网络安全法 编辑:程序博客网 时间:2024/06/06 16:51
一,缺失:
编译工具肯定也要移植的
如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的,那么就用交叉工具链的前缀)
- STLPort库的编译
- detours库的编译
- Boost库的编译
- Boost库的编译
- Boost库的编译
- GDAL库的编译
- boost库的编译
- 有关编译的库
- Boost 库的编译
- boost库的编译
- libevent库的编译
- LuaXml库的编译
- 静态库的编译
- newmat10库的编译
- Boost库的编译
- 库的编译
- jni 静态库的编译
- Androidjni 静态库的编译
- 剑指offer_链表---从尾到头打印链表
- 让sublime text像IDE一样格式化任何类型代码,不是jsFormat
- hadoop distcp使用
- 天平
- spring 注解 AOP
- 库的编译
- python 检测白名单外的非法进程的进程树和链接信息
- NIOP2012普及组-文化之旅
- 最大团,最大独立集
- java代码对MongoDB的CRUD
- 关于树的总结
- 换源,安装ssh,lamp
- myeclipse在运行时tomcat 5.5.23启动不了
- iOS图片实现可拉伸不变形的处理操作