环境:CentOS 7+NDK 20.0.5594570+libiconv-1.14

下载

下载libiconv-1.14版本,地址: https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

下载zbar,地址:https://github.com/ZBar/ZBar

编译libiconv-1.14

1.执行./configure

2.执行make

报错,提示 error: ‘gets’ undeclared here (not in a function)
 _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");

解决办法:
cd srclib
sed -i -e '/gets is a security/d' ./stdio.in.h

编译zbar

1.解压ZBar-master.zip,将刚才编译好的libiconv-1.14文件夹,java/zbarjni.c文件,zbar文件夹,include文件夹复制到android/jni目录下,

最后的目录结构如下:

2.修改android/AndroidManifest.xml文件,修改后的文件如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.sourceforge.zbar.android"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="28" />
<application android:label="@string/app_name" >
<activity android:name="ACTIVITY_ENTRY_NAME"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

3.修改android/project.properties,修改target值为系统支持的最低版本,如android-19

4.修改Android.mk,如下:

#
# Android NDK makefile
#
# build - <ndk path>/ndk-build ICONV_SRC=<iconv library src>
# clean - <ndk path>/ndk-build clean
#
MY_LOCAL_PATH := $(call my-dir) ICONV_SRC := $(MY_LOCAL_PATH)/libiconv-1.14 # libiconv
include $(CLEAR_VARS)
LOCAL_PATH := $(ICONV_SRC) LOCAL_MODULE := libiconv LOCAL_CFLAGS := \
-Wno-multichar \
-D_ANDROID \
-DLIBDIR="c" \
-DBUILDING_LIBICONV \
-DBUILDING_LIBCHARSET \
-DIN_LIBRARY LOCAL_SRC_FILES := \
$(ICONV_SRC)/lib/iconv.c \
$(ICONV_SRC)/libcharset/lib/localcharset.c \
$(ICONV_SRC)/lib/relocatable.c LOCAL_C_INCLUDES := \
$(ICONV_SRC)/include \
$(ICONV_SRC)/libcharset \
$(ICONV_SRC)/libcharset/include include $(BUILD_SHARED_LIBRARY) LOCAL_LDLIBS := -llog -lcharset # libzbarjni
include $(CLEAR_VARS) LOCAL_PATH := $(MY_LOCAL_PATH)
LOCAL_MODULE := zbarjni
LOCAL_SRC_FILES := zbarjni.c \
zbar/img_scanner.c \
zbar/decoder.c \
zbar/image.c \
zbar/symbol.c \
zbar/convert.c \
zbar/config.c \
zbar/scanner.c \
zbar/error.c \
zbar/refcnt.c \
zbar/video.c \
zbar/video/null.c \
zbar/decoder/code128.c \
zbar/decoder/code39.c \
zbar/decoder/code93.c \
zbar/decoder/codabar.c \
zbar/decoder/databar.c \
zbar/decoder/ean.c \
zbar/decoder/i25.c \
zbar/decoder/qr_finder.c \
zbar/qrcode/bch15_5.c \
zbar/qrcode/binarize.c \
zbar/qrcode/isaac.c \
zbar/qrcode/qrdec.c \
zbar/qrcode/qrdectxt.c \
zbar/qrcode/rs.c \
zbar/qrcode/util.c LOCAL_C_INCLUDES := $(LOCAL_PATH)/include \
$(LOCAL_PATH)/zbar \
$(ICONV_SRC)/include LOCAL_SHARED_LIBRARIES := libiconv include $(BUILD_SHARED_LIBRARY)

5.修改Application.mk,如下:

APP_ABI := armeabi-v7a

6.切换到android/jni目录下,执行ndk-build命令

报错,如下:

解决办法:

修改libiconv-1.14/libcharset/config.h第14行,修改后的内容如下:#define HAVE_LANGINFO_CODESET 0

报错,如下:

解决办法:

修改文件libiconv-1.14/libcharset/lib/localcharset.c文件中函数get_charset_aliases (void),搜索:int c;把该变量定义放到该函数的开始处

继续编译,大功告成,在android/libs/armeabi-v7a目录下就可以看到生成的文件了

zbar的具体编译demo可参考:https://github.com/kongpf8848/zbar-android

zbar的具体使用demo可参考:https://github.com/kongpf8848/zbarcamera

zbar android sdk在CentOS 7下的编译和使用的更多相关文章

  1. CRTMPServer 在CentOS 64-bit下的编译(转)

    CRTMPServer 在CentOS 64-bit下的编译 http://blog.csdn.net/qiuchangyong/article/details/52848942 ========== ...

  2. zbar android sdk源码编译

    zbar,解析条码和二维码的又一利器,zbar代码是用c语言编写的,如果想在Android下使用zbar类库,就需要使用NDK将zbar编译成.so加载使用,zbar编译好的Android SDK可以 ...

  3. Android SDK中 tools 目录下的工具介绍

    Android SDK包含了各种各样的定制工具,简介如下: Android模拟器(Android Emulator )它是在你的计算机上运行的一个虚拟移动设备.你可以使用模拟器来在一个实际的Andro ...

  4. Nginx 1.9.7.2 + PHP 5.6.18(FastCGI)在CentOS Linux下的编译安装

    本文参考张宴的Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)[原创]完成.所有操作命令都在CentOS 6.x 64位操作系统下实践 ...

  5. CentOS 7下OpenLDAP编译安装及配置

    一.环境 Server:基于CentOS-7-x86_64-1511 Server IP: 172.18.12.203 二.软件获取 OpenLDAP OpenLDAP官网下载地址:http://ww ...

  6. centOS linux 下PHP编译安装详解

    一.下载PHP源码包 wget http://php.net/distributions/php-5.6.3.tar.gz   二.添加依赖应用 yum install -y gcc gcc-c++ ...

  7. centOS linux 下nginx编译安装详解

    Nginx的官方网站是 www.nginx.org   Nginx的下载地址是:http://nginx.org/en/download.html   由 于官网的设计非常简洁不大气不上档次,所以我们 ...

  8. Ubuntu下全命令行安装Android SDK

    为了在AWS云服务器上实现自动化打包Android APP的APK包,我需要远程命令行环境下安装Android SDK,当然还要用代理或者科学上网,这里简单整理一下过程: 首先,由于墙的原因,Andr ...

  9. Android SDK开发包国内下载地址

    不知道是因为最近kaihui还是怎么的,打开android sdk官方网站特别的慢,想下载最新版本的platform几乎变成不可能完成的任务,不知道为什么Google不像Apache那样在各国设立镜像 ...

随机推荐

  1. Vue Stomp+SocketJS 数据报错[Object object]

    开头一句mmp tmd换位置了也没个提示!!!! 坑死爹了 <template> <div> <input type="text" v-model=& ...

  2. ios问题笔记

    32位 最多内存0到3G 64位 最多内存0到8G iOS模板code4app.com github.com developer.apple.con 动画 label不能变小 只能变大,(而uivie ...

  3. 2.dubbo 支持哪些通信协议?支持哪些序列化协议?说一下 Hessian 的数据

    作者:中华石杉 面试题 dubbo 支持哪些通信协议?支持哪些序列化协议?说一下 Hessian 的数据结构?PB 知道吗?为什么 PB 的效率是最高的? 面试官心理分析 上一个问题,说说 dubbo ...

  4. JDBC学习笔记一

    JDBC学习笔记一 JDBC全称 Java Database Connectivity,即数据库连接,它是一种可以执行SQL语句的Java API. ODBC全称 Open Database Conn ...

  5. pymysql之有序字典

    #!/usr/bin/env python #-*-coding:utf-8-*- import pymysql import json import collections conn = pymys ...

  6. 7、Topic

    Topics In the previous tutorial we improved our logging system. Instead of using a fanout exchange o ...

  7. 不知道多大的文件不要用cat查看!

    今天长清女子学校的主任给我微信上发了一图片,说登录服务器的时候就查看了一个文件,结果服务器的风扇忽然变的特别响,系统慢了好多,让我看看是什么回事!我当时心里想,无缘无故怎么会这样,难不成是进病毒了?查 ...

  8. c# 第三节 vs的安装

    本节内容: 学会安装vs 一:下载 地址:http://down.lansedongli.com/view/30323.html 二.vs2015支持的操作系统 三.vs2015的硬件要求 四.安装 ...

  9. 04-numpy-笔记-transpose

    借鉴代码https://blog.csdn.net/xiongchengluo1129/article/details/79017142 吐槽一下CSDN的垃圾广告.. 这是转置,所以1维(向量)和2 ...

  10. luoguP3704 [SDOI2017]数字表格

    题意 默认\(n\leqslant m\) 所求即为:\(\prod\limits_{i=1}^n\prod\limits_{j=1}^mf[\gcd(i,j)]\) 枚举\(\gcd(i,j)\)变 ...