目标:编译 epic

异常信息一:

      No CMAKE_C_COMPILER could be found. 
      No CMAKE_CXX_COMPILER could be found.
 
解决方法:
    编译异常提示中有链接 “Open File”,点击该链接,则直接跳转到出错误的地方。我是在运行 android.toolchain.cmake 时异常,现列出如下:
 
    1. 异常提示:找不到 ndk toolchain 文件
      首先,看项目设置的 ndk 路径有无问题,如图示:
      

      此处没问题。
      其次,看 cpp 包中 shell 脚本配置的 ndk 路径有无问题:
      
      此处有问题。黄色框中请改成你自己在环境变量配置的 android sdk 全局路径名。epic项目中这里写的 ANDROID_SDK,我自己是ANDROID_HOME。MacOS OS一般在用户目录下的 .bash_profile;Window OS打开“环境变量”配置窗口即可看见;Ubuntu OS一般在用户目录下的 .profile;请自行查找。
    
    2. 再次编译,依然出错,再次 Open File,直接跳转到了如下图所示:
      
      现在不支持 gcc 编译了,咋办?看下此处上下文代码逻辑,然后……,
      
      注:(“制定”修改为“指定”)
    3. 再次编译,还是出错,但根据第二次的解决方式,这次就很好找。依然点击链接“Open File”:
      
      看到没?不支持armeabi啦!所以,我们留下支持的 arm 架构,如下图所示:
      
 
    然后,编译成功!
      
    
    参考链接:
  
 
异常信息二:
         epic/library/src/main/cpp/fake_dlfcn.cpp:117:25:  error: arithmetic on a pointer to void
         shoff = ((void *) elf) + elf->e_shoff;  // void *shoff = elf(Elf64_Ehdr *) + elf->e_shoff(__u64)
                      ~~~~~~~~ ^
异常原因:
         void * 不能进行运算(不同的C标准,有不同的定义。比如:按ANSI标准,不能对 void * 进行运算;而GNU则指定 void * 的算法操作与 char * 一致)
 
异常分析:
     1. 写一个测试代码:testvoidpointer.cpp

#include <iostream>

struct Elf_Ehdr{
int a;
int b;
int c;
}; int main(int argc, const char * argv[]) {
// insert code here... // occur error code
void *shoff;
Elf_Ehdr *elf = new Elf_Ehdr(); shoff = ((void *) elf) + ;
shoff += ; std::cout << "Hello, World!\n"; // 1. std is namespace.
return ;
}

    2. 用g++编译,结果如下:

             

    3. 用clang编译,结果如下:

             
 
解决方案:根据代码上下文,将 void * 的 指针转换为 char * 即可。
                  示例代码:
                            shoff = ((void *) elf) + elf->e_shoff;  ✕       
                            shoff = ((char *) elf) + elf->e_shoff;  ✓ 
        
                    参考资料:
                            Pointerarithmetic for void pointer in C
                            void 及 void 指针含义的深刻解析
                            C++ void * 的使用
                            C++ 中 void 型指针

      

【tips】编译epic异常解决的更多相关文章

  1. less-loader编译calc异常解决方法

    问题: width:calc(100% - 200px);最后编译成calc(-100%) 解决方法 width: calc(~"100% - 200px"); 加上 ~ 并加上引 ...

  2. Java与SQL Server, MySql, Oracle, Access的连接方法以及一些异常解决

    Java与SQL Server, MySql, Oracle, Access的连接方法以及一些异常解决 I. 概述 1.1 JDBC概念 JDBC(Java Database Connectivity ...

  3. Android 异常解决方法【汇总】

    (1)异常:Android中引入第三方Jar包的方法(Java.lang.NoClassDefFoundError解决办法) 1.在工程下新建lib文件夹,将需要的第三方包拷贝进来.2.将引用的第三方 ...

  4. Java之运行时异常与编译时异常区别

    Java中用2种方法处理异常: 1.在发生异常的地方直接处理: 2.将异常抛给调用者,让调用者处理. Java异常可分为3种: (1)编译时异常:Java.lang.Exception (2)运行期异 ...

  5. [异常解决] How to build a gcc toolchain for nRF51 on linux (very detailed!!!)

    1.Install gcc-arm-none-eabi https://devzone.nordicsemi.com/tutorials/7/This link shows that developm ...

  6. VS2010出现FileTracker : error FTK1011编译错误的解决办法

    VS2010出现FileTracker : error FTK1011不知道是不是vs2010的一个bug,反正有人提交了. FileTracker : error FTK1011编译错误的解决办法有 ...

  7. [异常解决] 初玩SAE遇到的小问题——注册&创建项目+MyEclipse装插件直接部署+一个简单的JSP部署实现

    ① 新浪SAE快速上手教程:http://jingyan.baidu.com/season/43090 上面一个链接是针对PHP的相关介绍,如果用java还有点不一样,具体请看新浪SAE官网:http ...

  8. redis 异常解决办法

    redis 异常解决办法 26069:M 08 Aug 17:06:58.858 # WARNING: The TCP backlog setting of 511 cannot be enforce ...

  9. ClientAbortException 异常解决办法

    http://blog.sina.com.cn/s/blog_43eb83b90102ds8w.html ClientAbortException 异常解决办法 当我们用Servlet导出图片,或用J ...

随机推荐

  1. vue.js - axios Get、Post方法传参给 .net core webapi。

    一:axios中是 Get请求: 1:在vue项目中通过params属性携带数据: let _self = this; axios({ method:'get', url:'http://localh ...

  2. linux ln 命令,相当于windows快捷方式

    ln -s 源文件 目标文件. ln -s  **  **,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间, 硬链接ln ** **,没有参数-s, 它会在你选定的位置上生成一个和源文件大 ...

  3. C# this关键字(给底层类库扩展成员方法)

    本文参考自唔愛吃蘋果的C#原始类型扩展方法—this参数修饰符,并在其基础上做了一些细节上的解释 1.this作为参数关键字的作用 使用this关键字,可以向this关键字后面的类型添加扩展方法,而无 ...

  4. 【Guava】Optional接口来避免空指针错误

    null会带来很多问题,从开始有null开始有无数程序栽在null的手里,null的含义是不清晰的,检查null在大多数情况下是不得不做的,而我们又在很多时候忘记了对null做检查,在我们的产品真正投 ...

  5. Web App、Hybrid App、 Native App

    1.特点: 1. 偏交互的Native,偏浏览的Web:交互指复杂操作,输入/选择什么的2. 已稳定的Native,试错中的Web:H5页面用来做低成本验证很好3. 访问硬件Native,信息展示We ...

  6. hadoop-2.6.0-cdh5.4.5.tar.gz(CDH)的3节点集群搭建(含zookeeper集群安装)

    前言 本人呕心沥血所写,经过好一段时间反复锤炼和整理修改.感谢所参考的博友们!同时,欢迎前来查阅赏脸的博友们收藏和转载,附上本人的链接 http://www.cnblogs.com/zlslch/p/ ...

  7. 运行Rails server时,出 Error:Address already in use错误

    运行dev@ubuntu:~/qq$ rails server出错 [2013-07-30 16:29:23] WARN  TCPServer Error: Address already in us ...

  8. Abschlussarbeit:Konstruktion und Implementierung von Dota2 Datenbank Intelligent Verwaltungsplatfom

    1.Die Hintergrund und Bedeutung des Themas Dank nicht ausreichendes Erkenntnisse der Spielplanner un ...

  9. 基础爬虫,谁学谁会,用requests、正则表达式爬取豆瓣Top250电影数据!

    爬取豆瓣Top250电影的评分.海报.影评等数据!   本项目是爬虫中最基础的,最简单的一例: 后面会有利用爬虫框架来完成更高级.自动化的爬虫程序.   此项目过程是运用requests请求库来获取h ...

  10. Unexpected exception 'Cannot run program '的解决

    最近重新升级的了ubuntu系统到14.04,eclipse重新打开后竟然之前的project都是红色叉叉,看了一下错误是以Unexpected exception 'Cannot run progr ...