环境:ubuntu、arm-linux-gnueabihf-gcc
目标环境:cortex-A7
准备:db-4.7.25.tar.gz、openldap-2.4.47.tgz官网下载
以下步骤均用普通用户,不需切换到root(个人习惯)
【交叉编译berkeleyDB、移植】
1.首先创建mkdir db-4.7.25-arm目录
2.解压tar zxvf db-4.7.25.tar.gz
3.在解压后的db-4.7.25目录中创建mkdir build_linux-arm目录
4.配置环境及编译
cd build_linux-arm/
../dist/configure --host=arm-linux CC=arm-linux-gnueabihf-gcc --prefix=/home/admin/tools/openldap/db-arm
make
make install(这一步也可以不用做,移植需要的文件已经在上一步生成,在build_linux_arm下面有db.h和.libs/libdb-4.7.a(静态库),这就是我们所要的文件,可以把db.h拷贝到目标系统中的/usr/include下面,或者自己添加环境变量,同理,libdb-4.5.a也可以放到/usr/lib下面)
【交叉编译openLDAP、移植】
1.解压tar -xvf openldap-2.4.47.tgz
2.进入其目录cd openldap-2.4.47
3.配置环境./configure CC=arm-linux-gnueabihf-gcc --host=arm-linux-gnueabihf --prefix=/home/admin/tools/openldap/openldap-arm LDFLAGS="-L/db交叉编译得到的库文件路径" CPPFLAGS="-I/db头文件或缺失的头文件路径" --enable-bdb -with-yielding-select=yes
4.进行make depend命令之前
a.先修改 build/shtool以避免strip error
打开build/shtool的980行,找到: if [ “.$opt_s” = .yes ]; then if [ “.$opt_t” = .yes ]; then echo “strip $dsttmp” 1>&2 fi strip $dsttmp || shtool_exit $? fi 将其修改成: if [ “.$opt_s” = .yes ]; then if [ “.$opt_t” = .yes ]; then echo “arm-none-linux-gnueabi-strip $dsttmp” 1>&2 fi arm-none-linux-gnueabi-strip $dsttmp || shtool_exit $? fi
b.修改 include/portable.h避免:~/result.c:961: undefined reference to 'lutil_memcmp'
修改 include/portable.h,找到第860行,如下注释的即可 //#define NEED_MEMCMP_REPLACEMENT 1
5.make depend
6.make
7.make install