问题标签 [linker-flags]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
22 浏览

linker - 我想知道当我使用命令“g++ -o main main.o -L”时发生了什么-l"

假设我在当前目录中有main.c main.o libheymath.so 。我想将它们链接在一起以生成一个可执行文件。我使用命令“g++ -o main main.o -L./ -lheymath”来实现这一点。但是不知道为什么要注明库目录和名称。据我所知,当我运行“./main”时,系统会将共享库加载到特定目录(例如/lib/use/lib以及 LD_LIBRARY_PATH 等中指定的目录)的内存中,但不是我所指出的。那么“-L./ -lheymath”的目的是什么?

工作目录文件:

main.c、main.o、libheymath.so

命令:

g++ -o main main.o -L./ -lheymath

。/主要的

0 投票
1 回答
110 浏览

gcc - MSVC '/SECTION:.data,EWR' 与 GCC 等效的链接器选项

我想在编译时将 EWR(Execute/Write/Read) 内存属性添加到 .data 部分。

MSVC 编译器只需添加“/SECTION:.data,EWR”链接器选项即可完成此操作。

但我不知道如何在 GCC 编译器(MinGW)中做到这一点。

请帮忙!

0 投票
0 回答
166 浏览

xamarin.ios - 添加链接器标志将导致构建失败

我在我的 Xamarin iOS 项目中使用了两个第三方框架,一个 Swift 和一个 Objective C。我被要求为这些框架添加以下链接器标志。

添加这些标志后,我会收到构建错误

MTOUCH:错误 MT5216:本机链接失败

我的问题是,

  1. 那些 Linker Flags 的含义是什么?
  2. 有没有地方可以找到链接器标志及其描述?
  3. 我如何知道第三方框架需要哪些链接器标志?
0 投票
2 回答
445 浏览

cmake - 自动将链接选项添加到共享库的依赖项

假设我有一个共享库,A和其他链接它的东西,B. 他们在两个独立的项目中。

在我当前的设置中,为了A能够正常工作的功能,B需要添加-rdynamic到其链接器选项中,如下所示:

问题是 可能有很多很多的依赖项A,因此必须为它们中的每一个显式包含上面的行是一件麻烦事。

有没有办法A让它所有的家属自动使用-rdynamic


编辑:这里是我的情况的更详细的解释。

我有一个共享库,mylib. 它不能是静态库。它在同名的 CMake 项目中定义。

CMakeLists.txt看起来像这样:

在单独的项目中,有可执行文件 ,client_i使用/链接到mylib,有时是间接的(即链接到链接到的东西mylib)。

其中之一CMakeLists.txt看起来像:

注意-rdynamic. 如果没有此选项,则由 提供的某些功能mylib不起作用。我需要它。

我的问题是可能有成千上万个不同client_i的 s,每个都由我提供的不同人/用户在自己的项目中定义mylib(并且可以用作二进制文件)。

我想避免必须添加-rdynamic到每个client_is,因为有些用户可能不知道它(因为它可能被间接使用),有些人可能会忘记它,它可能会导致头痛等。

理想情况下,CMakeLists.txtformylib看起来像:

aclient_i CMakeLists.txt只是:

它会-rdynamic在它的链接器选项中。但是我已经尝试过了,它似乎不起作用

0 投票
0 回答
835 浏览

android - Unity.ResolutionFailedException 没有可用的公共构造函数

我创建了一个 Android 和 iOS 平台的 Xamarin 表单应用程序,现在计划部署到 google play store 和 App Store。

我现在需要启用 Linker SDK 和用户程序集以剥离所有未使用的类并使应用程序文件更小。

在 Android 选项上,我有这个设置

安卓选项

我还创建了一个 Linker.xml 并在属性设置中将其设置为 LinkDescription

以下是我拥有的 Stacktrace

我使用了 Prism 7.0 框架和 Unity。

0 投票
2 回答
791 浏览

c++ - CMake 也将所有 gcc 标志传递给 nvcc

我的项目使用 cuda 内核作为一个小模块,需要 nvcc 进行编译。在编译期间,cmake 还将用于 gcc 的相同链接器和编译器标志传递给 nvcc。在我的特殊情况下,我收到以下错误。

按照线程中接受的答案,我设法删除了需要 nvcc 的目标的编译器标志,如下所示。

使用它,我避免了由于错误的编译器标志而导致的错误,如下所示:

但是我不能使用相同的过程来删除链接器标志,因为get_target_property只获取编译器标志而不是链接器标志。

我正在寻找一种解决方案,仅针对一个目标编译禁用链接器标志。

预期的 cmake 最低版本是VERSION 3.0

0 投票
1 回答
163 浏览

c - 预处理器是否可以检查是否使用了链接器选项?

我有一个计时器程序,它使用clock_gettime. 这需要-lpthread选项才能成功编译,否则会undefined reference to 'clock_gettime'出错。

到目前为止,我探索了我们可以生成预处理器警告消息#warning并检查包含是否存在#if __has_include("<pthread.h>")。但是检查这些并不能真正检查是否clock_gettime定义了函数。

只是好奇我是否可以制作一条自定义消息,以在编译时或预处理时警告那些在没有它的情况下编译以包含-lpthread选项的人。

我在 Windows 上使用 MinGW。

0 投票
0 回答
188 浏览

linker - 为什么我不能在公共输出部分中对来自 --emit-relocs ld 选项的输入部分进行分组?

我必须在运行时重定位一个精灵,所以我想访问链接器发出的所有重定位:因此使用--emit-relocsld 选项。问题是我想将所有.rela.*部分分组到链接描述文件中的一个.rela.dyn部分,然后通过这个唯一的部分来重新定位所有符号。

但是我无法让我的链接器脚本来实现这一点,我仍然.rela.*在最终的精灵中看到很多部分,而不是输出部分.rela.dyn。以下是我在链接器脚本中使用的内容,实际上只是从另一个有效但不使用的体系结构链接器脚本复制而来--emit-relocs

选项是否--emit-relocs“绕过”链接描述文件?还是我只是错过了什么?

谢谢,

亚历克斯

0 投票
0 回答
64 浏览

winapi - 如何使用 GCC 操作 PE 特性

像 MSVC 一样,我想像High Entropy VA, Dynamic Base, etc.gcc 一样设置 PE 特性。我怎么能用 gcc 做到这一点?目前,gcc 只设置了特性Executable

0 投票
1 回答
34 浏览

cuda - 我可以让 nvlink 列出它实际使用的库吗?

nvlink可以通过-L <path>选项为库提供搜索路径,以及要考虑的一堆库-lmylib1 -lmiylib2等。

可以nvlink列出它在链接期间实际使用的库(完整路径)吗?