ld相关内容
我使用GCC-ARM-Embedded和FreeRTOS. FreeRTOS具有功能vTaskSwitchContext(),仅在某些情况下使用 内联汇编代码. 问题是:当我使用LTO时,GCC不会考虑内联汇编代码,并认为未使用该函数,因此将其删除.然后,链接器将失败,因为无法解析内联汇编代码中的函数调用. 我会应用__attribute__((used)),但是我不想触摸FreeRT
..
我正在尝试使用sprof来分析某些软件(ossim),其中几乎所有代码都位于共享库中.我已经生成了一个分析文件,但是当我运行sprof时,出现以下错误: > sprof /home/eca7215/usr/lib/libossim.so.1 libossim.so.1.profile -p > log Inconsistency detected by ld.so: dl-open.c: 6
..
我在编译z3时遇到以下错误.对于ld来说似乎是错误的.我想知道如何做才能使其编译.这是git中opt分支的问题.我在使用OS X 10.9.2(13C1021)的iMac上 我使用的xcode版本5.1.1(5B1008)的xcode-select工具安装到版本2333.我使用的端口版本是2.2.1,安装了ld. 该问题似乎是一个链接问题.我将链接加载器用作:ld64 @ 136_2 + llvm
..
根据ld手册上的特殊符号. ,即位置计数器. 注意:.实际上是指从 当前包含的对象.通常这是SECTIONS语句, 其起始地址为0,因此为.可以用作绝对地址. 如果 .在部分说明中使用,但是它指的是 从该节开始的字节偏移量,而不是绝对地址. 因此,在这样的脚本中: SECTIONS { . = 0x100 .text: { *(.text)
..
我正在尝试组装一个简单的Hello World,它在以前的macOS版本中可以正常工作: global start section .text start: mov rax, 0x02000004 mov rdi, 1 mov rsi, msg mov rdx, 1
..
我正在使用以下命令编译一个名为"interrogate"的可执行文件: g++ -o built/bin/interrogate -Lbuilt/lib -Lbuilt/tmp -L/usr/X11R6/lib \ built/tmp/interrogate_composite1.o built/tmp/interrogate_composite2.o \ -lp3cppParser -lp
..
我正在阅读关于操作系统的下一本书.在第43页中,他们使用以下命令将带注释的机器代码转换为原始机器代码文件: $ ld -o basic.bin -Ttext 0x0 --oformat binary basic.o 在MacBook Pro(运行Mavericks)中运行该命令时,我得到: ld: unknown option: -Ttext 我进行了一些研究,发现OS X的链
..
我正在使用Boost序列化.我使用以下代码进行编译:-L/opt/local/lib -lboost_serialization -stdlib=libc++,但出现了几个(不透明)错误: Undefined symbols for architecture x86_64: "boost::archive::text_oarchive_impl::save(std::__1::basic
..
我使用在线安装程序安装了Qt5.4(在ubuntu 14上运行).我正在尝试编译我的c ++源代码并针对libQt5Core进行链接,但ld抛出错误: make g++ -Wall test.o Party.o Communication.o FileParser.o PeerConnection.o ServerModule.o Utilities.o -o party -g -L/hom
..
我有为多个CPU编写的性能关键代码.我在运行时检测CPU,并基于此对检测到的CPU使用适当的功能.因此,现在我必须使用函数指针并使用这些函数指针来调用函数: void do_something_neon(void); void do_something_armv6(void); void (*do_something)(void); if(cpu == NEON) { do_so
..
我正在构建类似问题在我的情况下,有几个数组,每个数组都进入其自己的部分.ld_comp_array_ *,其中*与该数组的名称匹配.然后,我使用ld --verbose获取默认的链接描述文件,并通过将所有这些部分(已排序,以便不同数组的元素不会混合)放入输出部分进行修改: KEEP (*(SORT_BY_NAME(.ld_comp_array*))) 一切正常. 然后事情变得有点复
..
当我检查gcc -v -o proggy.exe proggy.o生成的代码时,我发现命令行扩展为一大堆库选项和库,所有这些选项和库都使用collect2.exe链接在一起. ld.exe怎么了?为什么我看不到?有人可以向我解释一下collect2.exe做什么吗? 解决方案 collect2是一种实用程序,用于生成__main(在main开头调用的自动生成的函数)所依赖的构造函数表.在.
..
我正在尝试使用ld而不是g ++链接C ++的输出.我这样做只是为了学习如何做,而不是出于实际目的,所以请不要建议仅使用g ++. 看着这个问题的人这个问题当他们运行ld命令时会得到相同的错误: $ ld test.o -o test.out ld: warning: cannot find entry symbol _start; defaulting to 000000000040
..
我正在使用Xcode构建旧代码并指定SDKROOT=/Developer/SDKs/MacOSX"${HOST_VERSION}".sdk/ 我想为系统上预装(?)的最新SDK指定SDKROOT.例如我已经在10.8上,并且想用-syslibroot指定SDKROOT,但是/Developer/SDKs/中没有这样的SDK.如果SDK_VERSION == HOST_VERSION,我应该完
..
我有大约50个不同的静态库链接到我的c ++项目中,并且链接平均需要70秒钟. 我发现,按照库的链接顺序移动这次会发生变化.我想这是可以预期的,如果链接器不必在到目前为止已建立的整个符号表中继续搜索一组符号. 我想我可以使用"nm"来获取静态库之间的依赖关系图.但是,那只会给我一个“正确"的链接顺序.获取最快的链接顺序会涉及哪些因素? 我感觉到,通过遍历将试图最小化某些数量的遍历
..
gold的人指出: -L DIR, --library-path DIR Add directory to search path --rpath-link DIR Add DIR to link time shared library search path bfd ld的人使它听起来像-rpath-link用于递归包含的sos.
..
编辑:我解决了这个问题,解决方法如下. 我正在专用于科学计算的共享计算集群中构建代码,因此我只能控制主文件夹中的文件.尽管我以fftw为例,但我想了解具体原因,为什么我尝试设置LD_LIBRARY_PATH无效. 我在这样的主文件夹中建立fftw和fftw_mpi库 ./configure --prefix=$HOME/install/fftw --enable-mpi --en
..
我正在尝试使用Ubuntu创建一个简单的内核.在终端中,键入 ld -Ttext 0x1000 -o kernel.bin loader.o main.o Video.o 但是我得到以下错误消息: ld: i386 architecture of input file `loader.o' is incompatible with i386:x86-64 outpu
..
有一点历史,我有3个库: 没有依赖项的"lib1.so" 与"lib1.so"链接的"lib2.so" 没有依赖项的“测试"可执行程序 我需要的是在运行时通过"dlopen"方法从“测试"可执行文件动态加载"lib2.so".问题在于"lib1.so"由于链接器不知道在哪里找到而无法自动加载. 我首先尝试像这样加载"lib1.so": void* ptr_lib1 =
..
是否无需修改这两个源文件,是否有办法获取通过编译它们而生成的目标文件,并说服链接程序将main_v1.c中的foo链接到bar.c中的bar? main_v1.c void foo(void); int main(void) { foo(); } bar.c #include void bar(void) { puts("bar()!"
..