编译android4.0.1源码遇到的问题

ubuntu12.04编译android4.0.1所遇到的问题
1.JDK要用1.6,      1.7不行
2.一些工具包没安装
/usr/bin/ld: cannot find -lz


host Executable: aapt (out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt)
/usr/bin/ld: cannot find -lz
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] Error 1
解决方法: sudo apt-get install zlib1g-dev    sudo apt-get install lib64z1-dev


/bin/bash: bison: command not found


Yacc: aidl <= frameworks/base/tools/aidl/aidl_language_y.y
bison -d  -o out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp frameworks/base/tools/aidl/aidl_language_y.y
/bin/bash: bison: command not found
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp] Error 127
解决方法:sudo apt-get install bison




/bin/bash: flex: command not found


out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp: In function ‘int yyparse()’:
out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp:1827: warning: deprecated conversion from string constant to ‘char*’
out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp:1970: warning: deprecated conversion from string constant to ‘char*’
Lex: aidl <= frameworks/base/tools/aidl/aidl_language_l.l
/bin/bash: flex: command not found
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_l.cpp] Error 127
解决方法: sudo apt-get install flex




/usr/bin/ld: cannot find -lncurses


host Executable: adb (out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb)
/usr/bin/ld: cannot find -lncurses
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] Error 1


解决方法:sudo apt-get install libncurses5-dev




fatal error: GL/glx.h: No such file or directory


development/tools/emulator/opengl/host/libs/Translator/GLcommon/GLDispatch.cpp:22: fatal error: GL/glx.h: No such file or directory
compilation terminated.
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libGLcommon_intermediates/GLDispatch.o] Error 1


解决方法:sudo apt-get install libgl1-mesa-dev




sh: gperf: not found


target Generated: libwebcore <= external/webkit/Source/JavaScriptCore/create_regex_tables
Generating CSSPropertyNames.h <= CSSPropertyNames.in
sh: gperf: not found
calling gperf failed: 32512 at ./makeprop.pl line 140.
make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/CSSPropertyNames.h] Error 25
make: *** Deleting file `out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/CSSPropertyNames.h'


解决方法:sudo apt-get install gperf






3.错误。。需要修改原文件等
错误:
frameworks/base/libs/utils/RefBase.cpp:483:67: error: passing ‘const android::RefBase::weakref_impl’ as ‘this’ argument of ‘void android::RefBase::weakref_impl::trackMe(bool, bool)’ discards qualifiers [-fpermissive]
 make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] Error 1
解决办法:gedit frameworks/base/libs/utils/Android.mk
修改以下语句
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)

LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) –fpermissive


错误:
<command-line>:0:0: error: "_FORTIFY_SOURCE" redefined [-Werror]
 <built-in>:0:0: note: this is the location of the previous definition
 cc1plus: all warnings being treated as errors
make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1


此处编译错误是由于ubuntu 11.10采用了GCC4.6.1导致的。
解决方法:
修改源码目录下/build/core/combo/HOST_linux-x86.mk文件:
将以下语句
HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0
修改为
HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0


错误:
target R.java/Manifest.java: ApplicationsProvider
> (out/target/common/obj/APPS/ApplicationsProvider_intermediates/src/R.stamp)
>     (skipping hidden file
> 'packages/providers/ApplicationsProvider/res/xml/.searchable.xml.swp')
> packages/providers/ApplicationsProvider/res/xml/searchable.xml:17:
> ERROR No resource identifier found for attribute
> 'includeInGlobalSearch' in package 'android'
> packages/providers/ApplicationsProvider/res/xml/searchable.xml:17:
> ERROR No resource identifier found for attribute
> 'searchSettingsDescription' in package 'android'
> make: ***
> [out/target/common/obj/APPS/ApplicationsProvider_intermediates/src/R.stamp]
> Error 1


解决办法:rm -rf out/
重新再编译
源地址:http://groups.google.com/group/android-porting/browse_thread/thread/6f84c00649752a54?fwc=1




错误:In file included from external/oprofile/libpp/arrange_profiles.cpp:24:0:
external/oprofile/libpp/format_output.h:94:22: error: reference ‘counts’ cannot be declared ‘mutable’ [-fpermissive]
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/liboprofile_pp_intermediates/arrange_profiles.o] Error 1


解决办法:gedit external/oprofile/libpp/format_output.h
把:
mutable counts_t & counts;
改为:
counts_t & counts;


错误:
external/gtest/src/../src/gtest-filepath.cc:208:28: warning: missing initializer for member ‘stat::st_mtim’ [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:208:28: warning: missing initializer for member ‘stat::st_ctim’ [-Wmissing-field-initializers]
external/gtest/src/../src/gtest-filepath.cc:208:28: warning: missing initializer for member ‘stat::st_ino’ [-Wmissing-field-initializers]
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libgtest_host_intermediates/gtest-all.o] Error 1


解决办法:
gedit external/gtest/include/gtest/internal/gtest-param-util.h
//增加这行代码:
#include <cstddef>


错误:
ort.a(Mutex.o): In function `llvm::sys::MutexImpl::tryacquire()':
/home/txiuqi/androidsrc/external/llvm/lib/Support/Mutex.cpp:143: undefined reference to `pthread_mutex_trylock'
collect2: ld 返回 1
make: *** [out/host/linux-x86/obj/EXECUTABLES/test-librsloader_intermediates/test-librsloader] 错误 1
make: *** 正在等待未完成的任务....
解决办法:
gedit external/llvm/llvm-host-build.mk
#增加这句代码
LOCAL_LDLIBS := -lpthread -ldl


错误:
frameworks/compile/slang/slang_rs_export_foreach.cpp: 在静态成员函数‘static slang::RSExportForEach* slang::RSExportForEach::Create(slang::RSContext*, const clang::FunctionDecl*)’中:
frameworks/compile/slang/slang_rs_export_foreach.cpp:247:23: 错误: variable ‘ParamName’ set but not used [-Werror=unused-but-set-variable]
host StaticLib: libslang (out/host/linux-x86/obj/STATIC_LIBRARIES/libslang_intermediates/libslang.a)
cc1plus: all warnings being treated as errors
make: *** [out/host/linux-x86/obj/EXECUTABLES/llvm-rs-cc_intermediates/slang_rs_export_foreach.o] 错误 1
make: *** 正在等待未完成的任务....


解决办法:
gedit frameworks/compile/slang/Android.mk  
修改
local_cflags_for_slang := -Wno-sign-promo -Wall -Wno-unused-parameter -Werror

local_cflags_for_slang := -Wno-sign-promo -Wall -Wno-unused-parameter



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要基于 Android 的 OpenCV 4.0.1 和 OpenCV Contrib 4.0.1 进行编译,可以按照以下步骤进行: 1. 下载 OpenCV 4.0.1 和 OpenCV Contrib 4.0.1 的源代码: ``` git clone https://github.com/opencv/opencv.git cd opencv git checkout 4.0.1 cd .. git clone https://github.com/opencv/opencv_contrib.git cd opencv_contrib git checkout 4.0.1 ``` 2. 安装 Android NDK 和 Android SDK,并设置相应的环境变量。 3. 在 opencv 目录下创建一个 build 目录,并进入该目录: ``` mkdir build cd build ``` 4. 运行以下命令,生成 OpenCV Android 库: ``` cmake -DANDROID_ABI=armeabi-v7a \ -DANDROID_PLATFORM=android-21 \ -DANDROID_TOOLCHAIN=clang \ -DANDROID_STL=c++_static \ -DWITH_OPENCL=OFF \ -DWITH_IPP=OFF \ -DWITH_TBB=OFF \ -DWITH_MATLAB=OFF \ -DWITH_CUDA=OFF \ -DWITH_GTK=OFF \ -DBUILD_opencv_apps=OFF \ -DBUILD_ANDROID_EXAMPLES=OFF \ -DBUILD_ANDROID_PROJECTS=OFF \ -DBUILD_DOCS=OFF \ -DBUILD_EXAMPLES=OFF \ -DBUILD_PACKAGE=OFF \ -DBUILD_PERF_TESTS=OFF \ -DBUILD_TESTS=OFF \ -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_TOOLCHAIN_FILE=../../android.toolchain.cmake \ ../ ``` 其中,`ANDROID_ABI` 表示 Android 平台架构,这里设置为 `armeabi-v7a`,表示 ARMv7 架构;`ANDROID_PLATFORM` 表示 Android 平台版本,这里设置为 `android-21`;`ANDROID_TOOLCHAIN` 表示使用的工具链,这里设置为 `clang`;`ANDROID_STL` 表示使用的 C++ 标准库,这里设置为 `c++_static`,表示静态链接;`WITH_OPENCL`、`WITH_IPP`、`WITH_TBB`、`WITH_MATLAB`、`WITH_CUDA`、`WITH_GTK` 分别表示是否启用 OpenCL、IPP、TBB、MATLAB、CUDA、GTK 等功能,这里都设置为 `OFF`;`BUILD_opencv_apps`、`BUILD_ANDROID_EXAMPLES`、`BUILD_ANDROID_PROJECTS`、`BUILD_DOCS`、`BUILD_EXAMPLES`、`BUILD_PACKAGE`、`BUILD_PERF_TESTS`、`BUILD_TESTS` 分别表示是否编译 OpenCV 应用程序、Android 示例、Android 项目、文档、示例、打包、性能测试、测试,这里都设置为 `OFF`;`OPENCV_EXTRA_MODULES_PATH` 表示 OpenCV Contrib 目录的路径;`CMAKE_BUILD_TYPE` 表示编译类型,这里设置为 `Release`;`CMAKE_TOOLCHAIN_FILE` 表示使用的交叉编译工具链文件。 5. 运行以下命令,编译生成 OpenCV Android 库: ``` make -j4 ``` 其中,`-j4` 表示使用 4 个核心进行编译。 6. 在 build 目录下会生成一个 `sdk` 目录,其中包含编译好的 OpenCV Android 库。 可以将该库导入到 Android Studio 中,然后在项目中使用该库提供的函数进行开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值