问题标签 [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 回答
1032 浏览

ios - XCode 中的 ObjC 链接器标志

我正在使用 Swift 开发 iOS 应用程序,我想在其中集成Google SignIn。我已经在我的项目中成功集成了 Google SDK,并且我还在我的项目中集成了 BillDesk 支付集成(这是来自 billdesk 的静态库libBilldesk.a)。

但是,当我运行该项目时,它给了我 billdesk 库 ( libBilldesk.a)的错误duplicate symbol _OBJC_CLASS_$,当我删除 -ObjC 链接器标志时,它会成功构建,但那时它给 Google SignIn 提供了错误[__NSDictionaryI gtm_httpArgumentsString]: unrecognized selector sent to instance 0x7f84eb6a2d80

我已经搜索了很多关于-ObjC,的内容-force_load-all_load但没有得到任何解决方案,所以请提出您有价值的解决方案。

谢谢

这是此操作的屏幕截图...

对于 Billdesk

对于谷歌

0 投票
0 回答
1022 浏览

ios - XCode:如何解决“链接器命令失败,退出代码 1”

总结一下我的情况:我正在使用 XCode7 Objective-C,我正在使用 iOS 7.1 在 iPhone 4 上进行调试,我想实现一个 Wikitude SDK 示例(增强现实框架)

这是我的问题,

根据我添加所有需要的.frameworks的过程,我应该在构建设置>>其他链接器标志中添加“-ObjC”。当我这样做时,代码将不再编译

我已经阅读了很多遇到相同问题的人的解决方案。例如“启用/禁用位码”或“检查程序集”或许多其他对我不起作用的事情

我还想说我以前从未使用过 XCode,而 Objective-C 对我来说还是很新的。我也被迫使用 Objective-C,因为我用来构建我的解决方案的示例代码也在 Objective-C 上,我自己无法将它转换为 swift。我也像 2 周前一样更新了我的 XCode。

如果有人可以向我简要介绍,或者给我一些关于我应该检查/做什么来解决这个问题的指导,那将非常好,并且可能对下一个问题有所帮助。提前致谢。

这是我添加 -ObjC 链接器标志时收到的错误的完整日志完整日志

更新 我终于让它工作了,但我不确定如何。真正的错误不是“链接器命令...”而是架构类型(错误:未找到架构类型 x86_64

这是我按大致顺序所做的所有事情

  • 检查:常规>>链接框架和库:所以没有遗漏
  • 检查:构建阶段>>链接二进制与库:所以也没有任何遗漏
  • 修改:构建设置>>架构>>架构:armv7,armv7s
  • 检查:构建设置>>架构>>仅构建活动架构:是(调试)
  • 修改:构建设置>>架构>>有效架构:armv7,armv7s
  • 已删除:窗口>>项目>>我的项目>>派生数据:删除
  • 清洁项目
  • 插入 iPhone
  • 尝试在我的 iPhone 上运行:失败
  • 禁用:构建设置>>构建选项>>启用位码
  • 在我的 iPhone 上再次运行:成功
0 投票
2 回答
1711 浏览

c++ - CMake AMRCC + 自定义链接器

我正在尝试在使用cmake编译的项目中使用armcc,但使用自定义专有链接器(不是armlink)。

我已将toolchain.cmake文件中的变量更改如下:

但是当cmake试图检查我的编译器套件时,它在链接步骤中失败了:

问题出--list cmTC_c08ef.map在命令行末尾(文件中不存在toolchain.cmake)。

为了使其工作,我需要更改文件<cmake_install_dir>\Modules\Compiler\ARMCC.cmake如下:

有更好的方法来解决这个问题还是唯一的方法?

编辑:显然这是 cmake 的 armcc 支持中的一个错误,所以我会将我的更改保留在 ARMCC.cmake 文件中。

0 投票
4 回答
9200 浏览

xcode - Xcode how to exclude FOLDERS from compilation?

I saw this and answers in stackO, but didn't find how to exclude folders.

I have 3 folders with a lot of .h , .m and .mm and i need to exclude them temporary, but not to remove references. How can i do that?

0 投票
0 回答
1155 浏览

opencv - 如何正确地将链接器标志添加到 cmake?

我正在构建opencv-3.1.0并且我想使用ffmpeg它,它安装在自定义路径/media/sdcard/usr/lib中,/media/sdcard/usr/include. 通常,链接器会给我一个错误:

所以我给了 cmake 一些额外的标志:-DCMAKE_SHARED_LINKER_FLAGS="--library-path /media/sdcard/usr/lib", DCMAKE_INCLUDE_PATH=/media/sdcard/usr/include. Include 似乎根本不起作用,但至于链接器标志,cmake给了我以下输出:

但是当我尝试运行时make,出现错误: c++: error: unrecognized command line option '--library-path'

我的 ld 知道“--library-path”标志并找到必要的库,例如,如果我运行

它给了我

我可能缺少对整个过程的一些基本了解。

0 投票
2 回答
2737 浏览

c - 即使共享对象是由使用 -rdynamic 编译的程序加载的,您能否编译共享对象以首选本地符号?

我正在用 C 语言构建一个共享库,该库由我没有源代码访问权限的程序动态加载。目标平台是 64 位 Linux 平台,我们使用 gcc 构建。我能够在大约 100 行中构建该问题的复制品,但仍然需要阅读一些内容。希望它是说明性的。

核心问题是我在共享库中定义了两个非静态函数(bar和)。baz两者都需要是非静态的,因为我们希望调用者能够对它们进行 dlsym。此外,baz调用bar. 使用我的库的程序还有一个名为 的函数bar,这通常不会成为问题,但调用程序是用 编译的-rdynamic,因为它有一个foo需要在我的共享库中调用的函数。结果是我的共享库最终bar在运行时链接到调用程序的版本,产生不直观的结果。

在理想情况下,我可以在编译共享库时包含一些命令行开关,以防止这种情况发生。

我目前的解决方案是将我的非静态函数重命名为funname_local并将它们声明为静态。然后我定义了一个新函数: ,并将我的共享库中对 的funname() { return funname_local(); }任何引用更改为。这可行,但感觉很麻烦,我更愿意告诉链接器更喜欢在本地编译单元中定义的符号。funnamefunname_local

内部.c

内部.h

主程序

主文件

共享.c

编译:

跑:

0 投票
2 回答
355 浏览

ios - 添加与 Amazon Web 服务相关的 podfile 'FMDB' 后应用程序无法启动

所以我一直在使用 Amazon Web Services 构建一个项目,我决定要添加本地存储,所以我添加了 podfile 'FMDB'(使用此处找到的教学视频:https: //www.youtube.com/watch ?v=D5tE61gzIVs)。添加 podfile 后,出现以下错误:

其中很多我什至没有在我的应用程序中使用(例如 AWSGoogleSignInProvider)。我还尝试通过删除 -ObjC 并为我正在使用的每个 AWS 框架添加“-force_load(框架路径)”来更改“其他链接器标志”下的内容。但是,当我这样做时,我只会得到linker command failed with exit code 1. 我还尝试添加在 amazon sdk 中找到的所有 podfile(在此处找到:https ://github.com/aws/aws-sdk-ios ),但仍然存在以下错误:"_OBJC_CLASS_$_GIDSignIn", referenced from: objc-class-ref in AWSMobileHubHelper(AWSGoogleSignInProvider.o) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation).

有人知道我能为此做些什么吗?因为我确实需要将本地存储与我的 AWS 数据库一起使用,但我不确定如何修复这些错误。谢谢你。

0 投票
1 回答
10244 浏览

r - 从 R 内部设置 LD_LIBRARY_PATH

我已经安装了一个 R 包,但是为了通过 加载它library,需要将 LD_LIBRARY_PATH 设置为其中一个名为的库所在的路径libhts.so.2。加载仅在进入 R 之前编辑 LD_LIBRARY_PATH 时有效,而不是之后

我尝试了几种不同的方法来解决这个问题:

  1. configure从位于 R 包中的脚本中导出修改后的 LD_LIBRARY_PATH 。
  2. 在同一configure脚本中创建指向共享库的软链接。

两者都没有工作,在我看来,一旦 R 启动,就有一个变量存储 LD_LIBRARY_PATH 的结果。也许解决方案是编辑该变量。

0 投票
1 回答
262 浏览

objective-c - 如何忽略特定库的 -Objc 标志

在我的项目中,我有大量的静态库。我目前使用 -ObjC 链接器标志,它将包括实现任何 Objective-c 类的静态库的所有成员。

我有 1 个特别大的静态库,我特别想要只包含在二进制文件中的类(我知道 Objective-c 的动态性质以及这样做的注意事项)。如果不使用 -ObjC,就会发生这种情况。

是否可以向链接器指定我希望此特定库不属于 -ObjC 标志?

如果实现这一点的唯一方法是为我以某种方式发现包含 objc的每个其他库添加 force_load 标志,那将是不幸的。

0 投票
1 回答
1039 浏览

c++ - Apple Mach-O 链接器 (ld) 错误。ld: -r 和 -dead-strip 不能一起使用

XCode 5.0.1在成功编译 161 个 C++ 项目文件后给我一个错误。 有很多 Apple Mach-O Linker Error 问题,但没有一个对我有帮助。

错误消息如下:

我的构建设置中的链接部分如下图所示:

XCode 5.0.1 的链接器部分

谁能让我知道如何解决这个错误?

更新

当我设置 为时Dead Code StrippingNo我得到 19 个链接错误。Mach-O Type设置Dynamic LibraryReleaseDebug。这种情况下的错误如下:

和错误信息如下:

在一些类似的问题中,我看到这可能是由于 Boost 的多个版本造成​​的,但我已经检查过了。