我已经用google的nacl编译器编译了一些Qt代码,但是ncval验证器不能运行它。许多例子中的一个:
src/corelib/animation/qabstractanimation.cpp:165
以下是相关代码:
#define Q_GLOBAL_STATIC(TYPE, NAME) \
static TYPE *NAME() \
{ \
static TYPE thisVariable; \
static QGlobalStatic<TYPE > thisGlobalStatic(&thisVariable); \
return thisGlobalStatic.pointer; \
}
#ifndef QT_NO_THREAD
Q_GLOBAL_STATIC(QThreadStorage<QUnifiedTimer *>, unifiedTimer)
#endif
编译为:
00000480 <_ZL12unifiedTimerv>:
480: 55 push %ebp
481: 89 e5 mov %esp,%ebp
483: 57 push %edi
484: 56 push %esi
485: 53 push %ebx
486: 83 ec 2c sub $0x2c,%esp
489: c7 04 24 28 00 2e 10 movl $0x102e0028,(%esp)
490: 8d 74 26 00 lea 0x0(%esi,%eiz,1),%esi
494: 8d bc 27 00 00 00 00 lea 0x0(%edi,%eiz,1),%edi
49b: e8 fc ff ff ff call 49c <_ZL12unifiedTimerv+0x1c>
4a0: 84 c0 test %al,%al
4a2: 74 1c je 4c0 <_ZL12unifiedTimerv+0x40>
4a4: 0f b6 05 2c 00 2e 10 movzbl 0x102e002c,%eax
4ab: 83 f0 01 xor $0x1,%eax
4ae: 84 c0 test %al,%al
4b0: 74 0e je 4c0 <_ZL12unifiedTimerv+0x40>
4b2: b8 01 00 00 00 mov $0x1,%eax
4b7: eb 27 jmp 4e0 <_ZL12unifiedTimerv+0x60>
4b9: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi
4c0: b8 00 00 00 00 mov $0x0,%eax
4c5: eb 19 jmp 4e0 <_ZL12unifiedTimerv+0x60>
4c7: 90 nop
4c8: 90 nop
4c9: 90 nop
4ca: 90 nop
4cb: 90 nop
在49b检查调用指令:这是验证器无法理解的。到底是什么会导致编译器发出一条调用自身中间的指令?有办法解决这个问题吗?我用-g-O0-fno-inline编译过。编译器错误?
这是一个动态库还是一个还没有链接到可执行文件的静态对象?
在动态库中,这可能会出现,因为代码是作为位置相关的并链接到动态库中的。如果您看到TEXTREL,请尝试在上面使用“对象转储-d-r-R”,就是这种情况。NaCl动态链接故事中不支持TEXTREL。(通过在代码编译过程中使用-fPIC标志来解决)
对于静态对象,尝试在将其链接到静态可执行文件后进行验证。
可能这实际上是对外部符号的调用,它将在链接时填充。实际上,将被称为externalSymbol-4,这有点奇怪——也许这正是ncval验证器摆脱气味的原因。
1.1. 代码编译 1.1.1. Openwrt编译 1.1.2. Kernel编译 1.1.3. Uboot编译 1.1.4. VSP编译 1.1. 代码编译 1.1.1. Openwrt编译 作为Kamino18 YODAOS的整体编译环境,使用openwrt可以编译出系统正常运行所需的主要image如下: 镜像名字 镜像运行位置 镜像说明 镜像生成位置 mcu.bin MCU The ima
ucore 代码编译 (1) 编译过程:在解压缩后的 ucore 源码包中使用 make 命令即可。例如 lab1中: [email protected]: ~/lab1$ make 在lab1目录下的bin目录中,生成一系列的目标文件: ucore.img:被qemu访问的虚拟硬盘文件 kernel: ELF格式的toy ucore kernel执行文,被嵌入到了ucore.img中
代码不编译。我不明白错误是什么,请帮忙) 错误文本:g-Wall-c“main.cpp”(/media/ad/4GB-NTFS/prog/laba2)main。cpp:In函数“int main()”:main。cpp:46:12:错误:调用“Record::Record()”记录r1;^主要的cpp:12:1:注意:候选者:Record::Record(std::\u cxx11::string
我正在尝试学习java的这个新GWT部分。。。 我做了我的第一个简单的应用程序 我命名了 我的模块:-HelloWorld 我收到以下错误: 2014年4月18日下午4:00:53爪哇。util。首选项。WindowsPreferences警告:无法在根0x8000002处打开/创建prefs根节点Software\JavaSoft\prefs。Windows RegCreateKeyEx(…)返
PHP代码的编译 PHP是解析型高级语言,事实上从Zend内核的角度来看PHP就是一个普通的C程序,它有main函数,我们写的PHP代码是这个程序的输入,然后经过内核的处理输出结果,内核将PHP代码"翻译"为C程序可识别的过程就是PHP的编译。 那么这个"翻译"过程具体都有哪些操作呢? C程序在编译时将一行行代码编译为机器码,每一个操作都认为是一条机器指令,这些指令写入到编译后的二进制程序中,执行
编译solidity源代码 通过solc编译器编译solidity代码到字节码。你可以参考solidity安装文档在本地安装编译器。 编写solidity代码运行: $ solc <contract>.sol --bin --abi --optimize -o <output-dir>/ bin和ABI编译器参数都需要充分利用web3j中的智能合约。 bin,输出包含十六进制编码的solidit