abi

    5热度

    2回答

    我想使用libelf生成一个简单的静态ELF,但我似乎有麻烦。 我不想生成一个目标文件,然后将它链接到LD,而是我希望自己生成它。 该程序的主要目的是生成一个具有一个LOAD段的静态ELF并执行代码。 主要的问题不在shellcode本身,但可能在我试图以错误的方式产生的一些头文件中。当我尝试运行生成的ELF时,它会被杀死,就好像内核无法找到它刚加载的段一样。 如果你们可以暗示我,我会很喜欢。 c

    4热度

    2回答

    我从来没有想过下面的问题,但由于我现在不得不处理我的代码中的一堆依赖关系,我认为我最好弄清楚我的事实。让我们把它限制在一个现代的Linux版本中,比如ubuntu amd64。 由于静态库不包含动态库引用,在静态库中如何解析未定义符号 ?一个依赖的二进制文件能动态加载未定义的符号,还是必须在编译时由另一个静态库或目标文件解析这些符号? 编译器是否可以通过链接到动态库来解析(取决于静态库的应用程序的

    6热度

    2回答

    假设存在使用枚举类C++的11 API: // api.hpp enum class E {A, B, C}; void f(E); ... // api.cpp void f(E e) { if (e == E::A) ... } 现在假设我想使用这个API,但我没有一个C + +11编译器。所以我: 修改api.hpp并将enum类更改为常规枚举。 编

    0热度

    1回答

    什么是iOS ARM ABI中使用的R9寄存器?在ABI文档中,它说“注册R9具有特殊用法”,但实际上没有说明它的用途。

    2热度

    1回答

    我已阅读Creating Library with backward compatible ABI that uses Boost上的线程,我正在试图了解如何链接我的共享库以保持稳定的ABI,并避免干扰符号的问题。 我已经创建了下面的简单测试项目: cat <<EOF > a.c #define ABI __attribute__((visibility("default"))) int c

    2热度

    1回答

    我正在开发一个跨平台的项目,并且在OS X上,必须使用clang/llvm构建一个部分,因为它创建了一个Cocoa窗口,其余部分使用GCC构建。这被编译成一个链接到主要可执行文件的静态库。例如 //printnum.h std::pair<uint32_t, uint32_t> printnum(int num); //printnum.mm #include "printnum.h"

    5热度

    1回答

    这里是情况,我有一个使用最新GCC(4.3.3)的C++代码库,但我需要链接到使用GCC 3.2构建的较旧库。 3。没有新版本的库可用,我不能没有它,它是封闭的源,所以它不能被重建。 这似乎是一个问题,因为GCC 4.3.3和3.2.3之间存在ABI不兼容问题,所以我试图看看我的选项是用来解决这个问题的。 一些额外的细节: 我可以重现我的代码库与-fabi版本= 1的一切才能得到正确的ABI的版本

    1热度

    2回答

    我正在寻找一种解决方案开始我在ARM世界的旅程,我想使用C作为我的主要语言,并且我想创建一个基本程序使用此环境的标准I/O库。 此外,还有一个仿真器或类似的东西在基于X86的PC上运行?我可以在Debian for ARM这类仿真器上尝试一些操作系统? 谢谢。

    5热度

    2回答

    查看this question的背景。 基本上,我有一个类 class MyClass { virtual int foo4(double, int); }; 有没有一种方法来指示编译器生成将解析为foo4两个符号的定义如下?也就是说,如果可执行文件要求动态链接程序要求解析_ZN7MyClass4foo4Edi(符号为MyClass::foo4(double, int))和某个其他

    2热度

    1回答

    我正在写一个库函数,我真的需要能够传递参数,如vectors & maps。 我知道你不能有在图书馆 std::map<int> FixMap(const std::map<int> &); 因为二进制兼容性问题的头部声明STL参数的函数,除非库和可执行用相同的编译器&设置编译。 一个另一方面,使用Qt的模板库以下工作 QMap<int> FixMap(const QMap<int> &);