27得票3回答
LD_PRELOAD无法按预期工作。

考虑以下可以在程序执行之前预加载的库:// g++ -std=c++11 -shared -fPIC preload.cpp -o preload.so // LD_PRELOAD=./preload.so <command> #include <iostream> ...

27得票4回答
最新SDK的SDKROOT路径是什么?

我正在使用Xcode构建旧代码,并指定SDKROOT=/Developer/SDKs/MacOSX"${HOST_VERSION}".sdk/ 我想为系统预装的最新SDK指定SDKROOT。例如,我已经在10.8上,我想用-syslibroot指定SDKROOT,但在/Developer/S...

26得票3回答
如何使用自定义版本的glibc和静态链接构建C程序?

我已经构建了glibc 2.14并将其安装在目录~/GLIBC/glibc_install。现在我想使用这个C库构建和运行程序,而不是使用系统默认的C库。 为了确保我正在使用我的自定义glibc,我在glibc/stdio-common/printf.c:__printf中添加了一个put...

26得票3回答
创建一个静态的Haskell Linux可执行文件。

我很少遇到两个我非常喜欢的事情结合在一起给我带来这么多困扰(除了我的孩子)。我在工作中编写了一个使用类似text、xml-enumerator、attoparsec-text等库的Haskell程序。我已经在我工作的Windows机器上,我的Ubuntu虚拟机上(32位),我的Ubuntu桌面...

26得票1回答
强制GNU链接器生成32位ELF可执行文件

你好,我正在为自己编写的编译器生成x86汇编代码,但在64位虚拟机上链接文件时遇到了一些问题(汇编代码是32位的)。 我使用以下命令可以成功地组装目标文件:as --32 mult.S -o mult.o 但是我似乎找不到任何选项可以使ld生成一个32位的ELF文件:ld <some-...

24得票7回答
加载警告:无法找到入口符号_start。

我正在学习汇编语言编程。下面是一个简单的程序,它打印出'Hello, World!'。虽然程序运行得非常完美,但当加载时,我收到了警告消息。 ld: 警告:找不到入口符号 _start;默认为 0000000008048080 这里是代码:section .data msg...

24得票3回答
g++是既可以作为C++编译器又可以作为链接器的吗?

我正在查看在Eclipse中构建的输出。我正在进行交叉编译,针对ColdFire处理器。编译命令行如下:m68k-elf-g++ -O2 -falign-functions=4 -IC:\nburn\include -IC:\nburn\MOD52... 紧接着是更多的include文件、明显...

23得票8回答
使用ld直接链接C程序失败,出现undefined reference to `__libc_csu_fini`错误。

我正在尝试在Linux下编译一个C程序。然而,出于好奇心,我正在手动执行一些步骤: 使用gcc前端生成汇编代码 然后运行GNU汇编器以获取目标文件 最后将其与C运行时链接以获取可执行文件。 现在我卡在了链接部分。 该程序是一个非常基本的“Hello world”程序:#include...

23得票2回答
使用CMake编译并添加一个来自二进制文件的目标文件

我正在使用C++编写一个Excel文件构建器。我已经完成了所有必要的工作,但仍然依赖于一个外部空的 .xlsx 文件。我会解压它,遍历它,并根据需要添加数据以创建最终文件。我想通过将 .xlsx 文件转换为可执行文件的 .rodata 部分中的二进制数据块来消除这种依赖性,首先将其转换为对象文...

23得票5回答
链接脚本中的ALIGN

在链接脚本中,ALIGN关键字的作用是什么?我读了很多关于链接脚本的教程,但是我不明白ALIGN到底是干什么的。有人能简单解释一下吗?谢谢!