第三方库交叉编译
一、使用autoconf方式
gnu下载的库一般都使用autoconf方式编译,通常都是
./configure --prefix=/home/yy/lib --host=aarch64-linux-gnu
make
make install
如果没有configure文件通常先运行一下autogen.sh(有可能时其它名称)来生成configure文件
1.1 添加外部依赖库
添加外部依赖库通常用两种方法,一种是用pkg-config方式,如果依赖库支持这种方式,一般库的lib目录下有一个pkgconfig文件夹,里面有.pc文件。
使用pkg-confg方式添加依赖库需要设置一下pkg-config的环境变量PKG_CONFIG_PATH即可,pkg-config会到该环境变量指定的目录中去找.pc文件。
export PKG_CONFIG_PATH=/home/yy/dbus-install/lib/pkgconfig
如何有多个依赖库,则用冒号隔开
export PKG_CONFIG_PATH=/home/yy/dbus-install/lib/pkgconfig:/home/yy/readline-install/lib/pkgconfig
第二中方法是可以直接设置CFLAGS、LDFLAGS等环境变量,可以用.configure --help 命令看一下支持哪些环境变量设置
可能出现的问题:
用pkg-config方式设置的依赖库在checking 依赖库的时候仍然说库没找到,如
libudev和libical依赖库都能checking成功,但是readline 找不到。这时候看一下configure.ac中关于这些库的checking方式是怎么样的。readline使用AC_CHECK_HEADERS方式检查头文件,而libcal是用PKG_CHECK_MODULES方式。
这时候用pkg-config 方式添加的readline没法用AC_CHECK_HEADERS方式检查到,AC_CHECK_HEADERS会到CFLAGS环境变量指定的-I中去查找头文件,需要export CFLAGS=-I/home/yy/readline-install/include
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步