系统运行的一个软件需要一些依赖库,安装过程中出现了些问题,记录下来做备忘。
1.安装zlib出现
版本2.54.2
*** Working zlib library and headers not found ***
缺少zlib库
sudo apt-get install zlib1g
sudo apt-get install zlib1g-dev
You must have either have gettext support in your C library
缺少gettext
sudo apt-get install gettext
configure: error: *** Could not find libmount
sudo apt-get install libmount-dev
sudo apt-get install libmount1
sudo apt-get install libc6-dev
问题问题没有解决
安装zlib2.48.2
No package 'libpcre' found
sudo apt-get install libpcre3-dev
没有解决问题,通过
dpkg -l | grep pcre
可以看到已经安装的版本,ubuntu12.04只能到8.12,不能满足安装zlib库的需求。
在16.04下成功安装zlib ,aravis
安装提示的库后正常安装
sudo locate mtd-abi.h 定位文件位置
/home/tian/toolchain/arm-2014.05/arm-none-linux-gnueabi/bin/
交叉编译glib
# $WORK_DIR 为安装路径
CC=arm-none-linux-gnueabi-gcc \
./configure --build=arm-fsl-linux --host=arm-none-linux-gnueabi --prefix=/home/tian/work/CIMII/glib-2.48.2 \
glib_cv_stack_grows=no \
glib_cv_uscore=no \
ac_cv_func_posix_getpwuid_r=yes \
ac_cv_func_posix_getgrgid_r=yes \
ac_cv_lib_rt_clock_gettime=no \
glib_cv_monotonic_clock=yes \
ac_cv_type_long_long=yes \
# 如果编译出现找不到库的错误,在下面加入编译好库的路径
CFLAGS="-L$WORK_DIR/usr/lib -I$WORK_DIR/usr/include"
# 编译与安装
make
make install
make之后报错
gregex.c:27:18: fatal error: pcre.h:
定位pcre.h,复制到了zlib文件夹下
make clean
make
cannot find -lpcre
下载pcre源码
./configure --prefix=/home/tian/work/CIMII/pcre2-10.30/install/arm/ --bulid=arm-fsl-linux --target=arm-none-linux-gnueabi --host=arm-none-linux-gnueabi-gcc
checking host system type... Invalid configuration `arm-none-linux-gnueabi-gcc': machine `arm-none-linux-gnueabi' not recognized
./configure --prefix=/home/tian/work/CIMII/pcre2-10.30/install/arm/ --bulid=arm-none-linux --target=arm-none-linux-gnueabi --host=arm-none-linux-gnueabi
pcre下载8.41
交叉编译放在work/lib/install/arm/pcre-8.41
./configure --prefix=/home/tian/work/lib/install/arm/pcre-8.41 --target=arm-none-linux-gnueabi --host=arm-none-linux-gnueabi
make
make install
glib编译
CC=arm-none-linux-gnueabi-gcc \
./configure --build=arm-fsl-linux --host=arm-none-linux-gnueabi --prefix=/home/tian/work/lib/arm/glib-2.48.2 \
glib_cv_stack_grows=no \
glib_cv_uscore=no \
ac_cv_func_posix_getpwuid_r=yes \
ac_cv_func_posix_getgrgid_r=yes \
ac_cv_lib_rt_clock_gettime=no \
glib_cv_monotonic_clock=yes \
ac_cv_type_long_long=yes
libpcre.so.1, needed by ./.libs/libglib-2.0.so, not found (try using -rpath or -rpath-link)
报错,需要libffi的支持,
交叉编译libff
./configure --prefix=/home/tian/work/lib/install/arm/libffi-3.2.1/ --host=arm-none-linux-gnueabi CC=arm-none-linux-gnueabi-gcc
make
出现下面错误
./libtool: line 1125: arm-none-linux-gnueabi-gcc: command not found
交叉编译libtool,
下载源码libtool-2.4.6
./configure --prefix=/home/tian/work/lib/install/arm/libtool-2.4.6 --host=arm-none-linux-gnueabi CC=arm-none-linux-gnueabi-gcc
make
make install
回到libff文件夹
sudo make CFLAGS="-L/home/tian/work/lib/install/arm/libtool-2.4.6/lib -I/home/tian/work/lib/install/arm/libtool-2.4.6/include"
make CFLAGS="-I/home/tian/work/lib/install/arm/pcre-8.41/include -L/home/tian/work/lib/install/arm/pcre-8.41/lib"
LIBFFI_CFLAGS="-I/home/tian/work/lib/install/arm/libffi-3.2.1/lib/libffi-3.2.1/include/"
LIBFFI_LIBS="-L/home/tian/work/lib/install/arm/libffi-3.2.1/lib/libffi.la"
ZLIB_CFLAGS="-I/home/tian/work/lib/arm/zlib-1.2.11/include/"
ZLIB_LIBS="-L/home/tian/work/lib/arm/zlib-1.2.11/lib -lz"
//*****************************************************************************
export PCRE_CFLAGS="-I/home/tian/work/lib/install/arm/pcre-8.41/include" \
export PCRE_LIBS="-L/home/tian/work/lib/install/arm/pcre-8.41/lib -lpcre" \
export LIBFFI_CFLAGS="-I/home/tian/work/lib/install/arm/libffi-3.2.1/lib/libffi-3.2.1/include/" \
export LIBFFI_LIBS="-L/home/tian/work/lib/install/arm/libffi-3.2.1/lib -lffi" \
export ZLIB_CFLAGS="-I/home/tian/work/lib/arm/zlib-1.2.11/include" \
export ZLIB_LIBS="-L/home/tian/work/lib/arm/zlib-1.2.11/lib -lz"
make
成功编译
还是报错误
CCLD gobject-query
./.libs/libgobject-2.0.so: undefined reference to `ffi_type_pointer'
./.libs/libgobject-2.0.so: undefined reference to `ffi_type_float'
./.libs/libgobject-2.0.so: undefined reference to `ffi_type_void'
./.libs/libgobject-2.0.so: undefined reference to `ffi_type_sint64'
./.libs/libgobject-2.0.so: undefined reference to `ffi_prep_cif'
./.libs/libgobject-2.0.so: undefined reference to `ffi_type_uint32'
./.libs/libgobject-2.0.so: undefined reference to `ffi_type_double'
./.libs/libgobject-2.0.so: undefined reference to `ffi_call'
./.libs/libgobject-2.0.so: undefined reference to `ffi_type_sint32'
./.libs/libgobject-2.0.so: undefined reference to `ffi_type_uint64'
又说需要增加ZLIB_LIBS和ZLIB_CFLAGS
交叉编译安装zlib
./configure --host=arm-none-linux-gnueabi --prefix=/home/tian/work/lib/arm/zlib-1.2.11 \
最终变成
CC=arm-none-linux-gnueabi-gcc \
./configure --build=arm-fsl-linux --host=arm-none-linux-gnueabi --prefix=/home/tian/work/lib/arm/glib-2.48.2 \
glib_cv_stack_grows=no \
glib_cv_uscore=no \
ac_cv_func_posix_getpwuid_r=yes \
ac_cv_func_posix_getgrgid_r=yes \
ac_cv_lib_rt_clock_gettime=no \
glib_cv_monotonic_clock=yes \
ac_cv_type_long_long=yes
export PCRE_CFLAGS="-I/home/tian/work/lib/install/arm/pcre-8.41/include" \
export PCRE_LIBS="-L/home/tian/work/lib/install/arm/pcre-8.41/lib -lpcre" \
export LIBFFI_CFLAGS="-I/home/tian/work/lib/install/arm/libffi-3.2.1/lib/libffi-3.2.1/include/" \
export LIBFFI_LIBS="-L/home/tian/work/lib/install/arm/libffi-3.2.1/lib -lffi" \
export ZLIB_CFLAGS="-I/home/tian/work/lib/arm/zlib-1.2.11/include" \
export ZLIB_LIBS="-L/home/tian/work/lib/arm/zlib-1.2.11/lib -lz"
make
make install
过程中出现了很多问题,好在都一步步解决了。