• cygwin编译libiconv库的方法(网络收藏)


    1:下载

       到官网下载最新的libiconv库 http://ftp.gnu.org/pub/gnu/libiconv/ (1.14版本测试通过)解压到文件夹libiconv中

    2:配置

       打开Cygwin Terminal 进入解压文件目录

       输入命令:

         ./configure --build=x86_64-pc-linux-gnu --host=arm-linux-eabi

    3:编译

      添加三个文件Android.mk,AndroidManifest.xml,jni/Application.mk

      具体内容如下:

    •   Android.mk

            LOCAL_PATH:= $(call my-dir)

           #libiconv.so

           include $(CLEAR_VARS)

           LOCAL_MODULE := libiconv

           LOCAL_CFLAGS := \

                -Wno-multichar \

                -DANDROID \

                -DLIBDIR="c" \

                -DBUILDING_LIBICONV \

                -DIN_LIBRARY

           LOCAL_SRC_FILES := \

               libcharset/lib/localcharset.c \

               lib/iconv.c \

               lib/relocatable.c

           LOCAL_C_INCLUDES += \

          $(LOCAL_PATH)/include \

          $(LOCAL_PATH)/libcharset \

          $(LOCAL_PATH)/lib \

          $(LOCAL_PATH)/libcharset/include \

          $(LOCAL_PATH)/srclib

           include $(BUILD_STATIC_LIBRARY)

    • AndroidManifest.xml

            <?xml version="1.0" encoding="utf-8"?>

            <manifest xmlns:android="http://schemas.android.com/apk/res/android"

                    package="org.iconv.android"

                    android:versionCode="1"

                    android:versionName="1.0">

                   <uses-sdk android:minSdkVersion="9" />   

             </manifest>

    • jni/Application.mk

              APP_ABI := armeabi

              APP_PLATFORM := android-9

              APP_MODULES := libiconv

              APP_PROJECT_PATH := $(shell pwd)

              APP_BUILD_SCRIPT := $(APP_PROJECT_PATH)/Android.mk

            在目录下输入命令:

             $NDK_PATH/ndk-build

             如果成功得到下图输出

          

             在目录obj/local/armeabi/ 下可以找到静态库 libiconv.a

    4:错误处理

             1.   编译时提示:

                libiconv-1.14/jni/libcharset/lib/localcharset.c:51:24: error: langinfo.h: No such file or directory

                解决方法:

                     修改目录文件libcharset/config.h的宏定义,禁止该宏定义:

                     /* Define if you haveand nl_langinfo(CODESET). */

                     #define HAVE_LANGINFO_CODESET 0

              2.   提示错误:

                 报“c undeclaired”错误

                解决方法:

                      修改文件/libcharset/lib/localcharset.c中函数get_charset_aliases (void)

                      搜索:int c;

                      把该变量定义放到该函数的开始处。

     

  • 相关阅读:
    Ansible 简单使用
    修改Elasticsearch的settings
    Nginx ssl证书部署
    配置 Haproxy 防范 DDOS 攻击
    Sort命令使用
    Haproxy ssl 配置方式
    MySQL连接线程kill利器之pt-kill
    percona-toolkit工具包的安装和使用
    Centos7 禁止firewalld并使用iptables 作默认防火墙以及忘记root密码的处理方法
    pt-query-digest查询日志分析工具
  • 原文地址:https://www.cnblogs.com/wenlove/p/2909265.html
Copyright © 2020-2023  润新知