SylixOS 系统移植库第三方库流程 (其他系统交叉编译应该类似)

来源:互联网 发布:java反射到底是什么 编辑:程序博客网 时间:2024/05/29 11:36

第一步

如果是用autotool工具配置的项目,使用以下脚本配置:

#!/bin/sh

export CC=arm-sylixos-eabi-gcc

export CXX=arm-sylixos-eabi-g++

export SYLIXOS_BASE_PATH=/home/rootqt/SylixOS/sylixos-base

export LDFLAGS="-mcpu=cortex-a9 -mfloat-abi=softfp -mfpu=vfpv3 -mno-unaligned-access -fPIC -shared -L$SYLIXOS_BASE_PATH/libsylixos/Debug -L$SYLIXOS_BASE_PATH/libcextern/Debug -L/home/rootqt/SylixOS/lib -nostdlib -lcextern -lvpmpdm -lm -lgcc -ldsohandle"

export CFLAGS="-mcpu=cortex-a9 -mfloat-abi=softfp -mfpu=vfpv3 -nostdlib -Wl,-shared -fPIC -DSYLIXOS -DSYLIXOS_LIB -fsigned-char -fno-short-enums -I$SYLIXOS_BASE_PATH/libsylixos/SylixOS -I$SYLIXOS_BASE_PATH/libsylixos/SylixOS/include -I$SYLIXOS_BASE_PATH/libsylixos/SylixOS/include/network -I$SYLIXOS_BASE_PATH/libcextern/libcextern/include -I/home/rootqt/SylixOS/include"

export CXXFLAGS="-mcpu=cortex-a9 -mfloat-abi=softfp -mfpu=vfpv3 -nostdlib -fexceptions -frtti -Wl,-shared -fPIC -DSYLIXOS -DSYLIXOS_LIB -fsigned-char -fno-short-enums -I$SYLIXOS_BASE_PATH/libsylixos/SylixOS -I$SYLIXOS_BASE_PATH/libsylixos/SylixOS/include -I$SYLIXOS_BASE_PATH/libsylixos/SylixOS/include/network -I$SYLIXOS_BASE_PATH/libcextern/libcextern/include"

export LDSHAREDLIBC="$LDFLAGS"

export PKG_CONFIG_PATH="-I/home/rootqt/SylixOS/include"

export PKG_CONFIG_LIBDIR="-L/home/rootqt/SylixOS/lib"

export LIBXML2_CFLAGS="-I/home/rootqt/SylixOS/include"

export LIBXML2_LIBS="-L/home/rootqt/SylixOS/lib"

./configure --prefix=/opt/arm-sylixos-freexl --host=arm-sylixos-eabi --includedir=/home/rootqt/SylixOS/include --libdir=/home/rootqt/SylixOS/lib


第二步

替换libtool脚本为如下脚本:(作用是直接使用调用脚本的命令编译,不使用libtool的实际功能,另外,筛选掉的选项可能还存在,出错的时候自己添加,比如版本信息,不同的库可能会增加一个不一样的,如|| [ $1 = "2:0:1" ]的格式筛选掉就行了)

#!/bin/bash

CMD=""

while [ $# -ne 0 ]
do
if [ $1 = "--mode=link" ] || [ $1 = "--tag=CC" ] || [ $1 = "--tag=CXX" ] || [ $1 = "-module" ] || [ $1 = "--silent" ] || [ $1 = "-avoid-version" ] || [ $1 = "-release" ] || [ $1 = "-no-undefined" ] || [ $1 = "--mode=compile" ] || [ $1 = "--tag=disable-static" ] || [ $1 = "-version-info" ] || [ $1 = "8:0:1" ] || [ $1 = "3.6.2" ] || [ $1 = "2:0:1" ] || [ $1 = "11:7:9" ] || [ $1 = "-lpthread" ] || [ $1 = "-ldl" ] || [ $1 = "-rpath" ] || [ $1 = "/home/rootqt/SylixOS/lib" ]; then ""
else
CMD=$CMD" "$1
fi
shift
done

# CMD=$CMD" "-ldsohandle
echo "my_libtool: "$CMD
$CMD