ld相关内容

LD--导出--仅针对一个库的动态?

可以将--export-dynamic传递给ld,这将导出程序中的符号(以便它们可用于运行时加载的任何共享库): $ cat > test.c void foo() {} int main() { foo(); } ^D $ gcc test.c $ nm -D a.out | grep foo ...没什么。现在: $ gcc -Wl,--export-dynamic te ..
发布时间:2022-08-23 11:59:18 服务器开发

如何与Windows上的clang链接?

这是一些集合。使用Windows clang,我可以编写clang -c my.s并获得目标文件。我可以使用 链接它 &Q;C:程序文件(X86)Microsoft Visual Studio2019BuildToolsVCToolsMSVC14.29.30133inHostx64x64link.exe";n.o/Entry:Main (库路径为c:/Program Fil ..
发布时间:2022-08-23 11:49:45 其他开发

链接汇编程序生成的obj文件

我正在努力学习(或至少理解)Windows上的汇编。我在某个地方找到了这个Hello World示例,我想用它创建一个.exe文件,以确保所有内容都设置正确。 对于将发布其他Hello World示例的人,我想明确表示,我正在寻找具有直接Windows API调用的示例。 global _start extern _ExitProcess@4 ..
发布时间:2022-08-23 11:46:28 其他开发

使用CMake链接到TBB文库

我已下载tbb并将其放置在我的存储库目录中: > tree deps/tbb/ -d deps/tbb/ ├── bin ├── cmake │ └── templates ├── include │ ├── serial │ │ └── tbb │ └── tbb │ ├── compat │ ├── internal │ └── ..
发布时间:2022-08-23 11:31:06 C/C++开发

如何用LD链接器命令文件在特定地址放置常量?

我正在使用基于GCC的工具链的嵌入式处理器上开发一个C应用程序。在我的应用程序中,我需要在特定的内存位置放置一个标志。我需要有关链接器命令文件语法的帮助才能完成此操作。 推荐答案 在C文件中编写类似以下内容: static int flag __attribute__ ((section (".flag"))) __attribute__ ((__used__)) = 6; ..
发布时间:2022-08-23 11:21:03 其他开发

如何使函数具有库内部链接?

例如,如果我有两个文件foo.c和bar.o,并且foo.c包含引用bar.o中的函数bar()的函数foo(): int foo(int x) { x = bar(x); /* ... */ } 如何编译公开foo()但不公开bar()的静态或动态库?换句话说,我希望bar()仅在库内链接。 推荐答案 使用标准C时,您只能导出函数或不导出,没有“仅导出到这些文件”选项。因此 ..
发布时间:2022-08-23 11:09:40 其他开发

C-Externs-监控LD_PRELOAD库中的值的安全方法

背景 我帮助维护了一个简单的命令行工具diskmanager,用于监视糟糕的磁盘性能,这主要是由于同时使用同一磁盘的操作/用户太多所致。我的工作涉及维护一个库,libdisksupervisor.so,它偶尔用于通过以下方式启动磁盘管理器程序来监督它: LD_PRELOAD=/public/libdisksupervisor.so /sbin/diskmanager 我们这样做的原 ..
发布时间:2022-08-23 10:58:08 其他开发

带有全局变量的C_1d链接时间错误

我正在阅读《计算机系统:程序员的视角》,我看到了以下C文件: foo.c: void f(void); int x = 15213; int y = 15212; int main() { f(); printf("x = 0x%x y = 0x%x ", x, y); return 0; } Bar.c: double x; void f() ..
发布时间:2022-08-23 10:49:46 其他开发

为什么链接器更改共享库名称?

使用通过‘node-gyp’传递的链接器命令行选项,我指定希望程序链接的库路径和库名称。但生成的可执行文件没有引用我指定的文件,它在/usr/lib中引用了不同的名称。 我正在使用binding.gyp中的库节引用本地lib目录。 'libraries': [ '-lao-oboe', '-L ..
发布时间:2022-08-23 10:37:45 其他开发

GCC LD NoLoad链接器段生成可加载段

我正在开发一个ARM裸机应用程序,我已经用NOLOAD标记了一些部分。根据Understanding链接器脚本未加载部分》中的解释 ,我原以为生成的ELF文件不是具有这些节的可加载段(程序头),但它确实有。 这样对吗?为什么在ELF文件中将这些节标记为可加载? 由于链接器仍将数据放在.bss中,加载器如何知道不应加载节?还是因为NOLOAD只对初始化的符号(通常放在.data中)有意义,所 ..
发布时间:2022-08-23 10:29:02 其他开发

如何设置DT_RPATH或DT_RUNPATH?

在Linux上,ld.so(8)手册页讨论了动态库的搜索顺序。它说DT_RPATH已弃用,还提到了DT_RUNPATH。未提及-rpath链接器选项。 ld(1)手册页提到-rpath和-rpath-link选项,但从未提及DT_RPATH或DT_RUNPATH,除非是在说明库搜索顺序中,这当然与ld.so(8)中提供的信息不匹配。 最后是一个LD_RUN_PATH环境变量。ld(1)表示 ..
发布时间:2022-08-23 10:20:17 服务器开发

LD找不到libjasper库

我正在尝试将一个应用程序与Ubuntu 18.04上的GC链接起来。LD找不到libjasper库。我使用以下命令手动安装了它: sudo apt update sudo apt install libjasper1 libjasper-dev 但收到此错误: /usr/bin/ld: cannot find -llibjasper 我尝试使用此命令添加库,但不起作用: ..
发布时间:2022-07-16 23:13:44 其他开发

让我们分析一下“collect2:ld 返回 1 退出状态"?

我知道这表明存在链接器问题,主要是未解析的符号.我知道要解决该问题/摆脱该错误消息,必须提供更多信息.我知道在 SO 上解决这个问题有很多问题. 我的问题旨在帮助理解 make 和 ld,找出什么(和谁)试图用这条线表达什么. collect2: ld 返回 1 个退出状态 “collect2:"是什么意思?它是一个步骤 make 调用吗?我在我的系统上找不到具有该名称的可执行文件. ..
发布时间:2022-01-23 21:08:51 C/C++开发

当存在同名的共享库时,如何强制链接静态库

假设我有一个文件 main.cpp,它使用 libmath 中定义的 sin() 函数.还假设我们在同一目录中同时拥有 libmath.a 和 libmath.so.现在,如果我发出命令 g++ -o main main.cpp -lmath,Linux 的默认行为是链接到共享库 libmath.so.我想知道有没有办法强制程序与静态库 libmath.a 链接而不删除或移动共享库? 解决方 ..
发布时间:2022-01-23 21:01:17 服务器开发