ubuntu16.04编译及交叉编译依赖库出现的问题记录

系统运行的一个软件需要一些依赖库,安装过程中出现了些问题,记录下来做备忘。

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

过程中出现了很多问题,好在都一步步解决了。

猜你喜欢

转载自blog.csdn.net/tliang1984/article/details/81166141