编译环境:

ubuntu16.04、NDK-17c、libiconv-1.16.tar.gz

步骤:

1.将libiconv-1.16.tgr.gz解压并重命名为jni

tar zxvf libiconv-1.16.1.tar.gz
mv libiconv-1.16.1 jni

2.创建Android.mk文件(有版本要求可以创建Application.mk文件)

cd jni
vim Android.mk

复制以下内容到Android.mk中保存并且退出

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libiconv
LOCAL_CFLAGS := \-Wno-multichar \-DANDROID \-DLIBDIR="c" \-DBUILDING_LIBICONV \-DIN_LIBRARYLOCAL_SRC_FILES := \libcharset/lib/localcharset.c \lib/iconv.c \lib/relocatable.cLOCAL_C_INCLUDES += \$(LOCAL_PATH)/include \$(LOCAL_PATH)/libcharset \$(LOCAL_PATH)/lib \$(LOCAL_PATH)/libcharset/include \$(LOCAL_PATH)/srclib
include $(BUILD_SHARED_LIBRARY)

3.生成config.h文件

./configurg

4.make

make

5.编译(release版本)

ndk-build NDK_DEBUG=0

6.编译完成

目录libs下会生成动态库

编译过程中出现的错误:

/home/work/android/libiconv-1.16/obj/local/arm64-v8a/objs/iconv/libcharset/lib/localcharset.o: In function `locale_charset':
/home/work/android/libiconv-1.16/jni/libcharset/lib/localcharset.c:696: undefined reference to `nl_langinfo'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [/home/work/android/libiconv-1.16/obj/local/arm64-v8a/libiconv.so] Error 1

查看localcharset.c文件发现 HAVE_LANGINFO_CODESET 这个宏被打开导致

解决方法:

find . -name "config.h"

将所有config.h中的

#define HAVE_LANGINFO_CODESET 1 改为 #define HAVE_LANGINFO_CODESET 0

ndk编译libiconv相关推荐

  1. android2.2编译,Android NDK编译Box2D_V2.2

    如果大家有留意的话,就知道现在很流行的 愤怒的小鸟 的物理引擎是使用了Box2D,那么如何将这好东西移植到Android上呢?在网上找了一遍,发现资料还是少得可怜,于是自己研究研究一下,遇到问题就go ...

  2. 【Android开发】:在任意目录执行NDK编译

    2019独角兽企业重金招聘Python工程师标准>>> 文以简单的例子讲述如何在任意目录把自己写的C代码使用NDK提供的交叉编译该工具来编译成Android可使用的静态库/动态库. ...

  3. Android开发实践:在任意目录执行NDK编译

    本文暂时不讲述如何用NDK编译第三方开源代码库,而是先以简单的例子讲述如何在任意目录把自己写的C代码编译成Android可使用的静态库/动态库. 1. 准备环境 首先,你得安装了Android的NDK ...

  4. win10系统 ubuntu子系统 进行ndk编译笔记

    报错1:error adding symbols: file in wrong format collect2: error: ld returned 1 exit status win10系统 ub ...

  5. NDK 编译和使用静态库、动态库

    NDK 编译和使用静态库.动态库 情况一:编译静态库 情况二:编译动态库 情况三:编译动态库+静态库 情况四:已有第三方静态库(动态库),编译静态库(动态库) 默认所有代码和文件在$project/j ...

  6. Android Studio NDK 代码 Source Insight调试 (NDK 目前开发方案 | NDK 编译 | 导入 so 库 | 项目编码转换)

    作者 : 韩曙亮 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/52088039 最近在移植一个 JNI 项目, 比较纠结, A ...

  7. Android NDK编译中在libs\armeabi中加入第三方so库文件的方法

    Android NDK编译中在libs\armeabi中加入第三方so库文件的方法 假设要加入库文件的名字为libffmpeg.so文件 1.要在project\jni目录下新建一目录prebuilt ...

  8. 使用NDK编译VTK

    VTK提供了对安卓的CMAKE编译支持,其介绍文件在源代码根目录下的 "/cmake/android.toolchain.cmake". 对Wndows的编译自持描述为: 注意:但 ...

  9. NDK编译错误expected specifier-qualifier-list before...

    基于cocos2d-x在win7下开发android程序,一般都会选择先在win32下调试,等最后再在eclipse环境下安装测试到真机上.期间,要使用到cocos2d-x提供的一些简化方案进行NDK ...

  10. 10.29 工作笔记 ndk编译C++,提示找不到头文件(ndk-build error: string: No such file or directory)...

    ndk编译C++.提示找不到头文件(ndk-build error: string: No such file or directory) 被这个问题弄得愁眉苦脸啊.心想为啥一个string都找不到呢 ...

最新文章

  1. 深入浅出Pytorch:02 PyTorch基础知识
  2. 通过三个直观步骤理解ROC曲线
  3. 【Android Demo】悬浮窗体实现
  4. Python 计算各类距离
  5. MIMO雷达比幅单脉冲测角精度分析(系统工程与电子技术)
  6. OS / Linux / SIGCHLD 信号
  7. IOS-UITextField-改变光标颜色
  8. 知乎神回复:普通程序员一天的工作生活是怎样的?网友实名羡慕!
  9. 34 FI配置-财务会计-应收账款和应付账款-定义应付汇票的备选统驭科目
  10. 【正则表达式】正则表达式匹配${xxx}
  11. python中seek(10、1)_Python中index()和seek()的用法(详解)
  12. zabbix监控之模板使用、网络发现及邮件报警功能
  13. 终端天线—9.4G手机调试
  14. vue3.0实现jsoneditor组件
  15. 《设计模式修炼真经》15 — 模板方法模式
  16. 贝塞尔Bezier曲线的使用
  17. 沙箱支付实现扫码支付教程(前后端分离版)
  18. 【WLAN】【测试】Linux下aircrack-ng的应用之空口抓包全解
  19. iOS安全–在非越狱平台进行越狱开发(附分析流程)
  20. java se7 if_Java SE7新特性之在数值型的字面值中使用下划线

热门文章

  1. Windows、Linux、Mac OS下的锐捷认证的程序——mentohust
  2. 如何快速学习PLC编程
  3. App 上架 AppStore和证书的各种区别
  4. 统计Java源代码中关键字的数目(每个关键字的数目)
  5. 泛微OA如何重置管理员密码
  6. mysql8.0.13驱动包_MySQL ODBC驱动 V8.0.13 32/64位 官方版
  7. VB.net 进度条使用
  8. 利用动软代码生成器-------.net链接SQl数据库
  9. 程序员你写的代码,被爆出黑产了!
  10. Flash Builder 4.7安装破解教程详解(图文)