移植openLDAP、berkeleyDB到ARM环境

泪湿孤枕 提交于 2020-02-25 02:33:46

环境: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

 

   

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!