问题标签 [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.
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
但没有得到任何解决方案,所以请提出您有价值的解决方案。
谢谢
这是此操作的屏幕截图...
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 上再次运行:成功
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 文件中。
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?
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”标志并找到必要的库,例如,如果我运行
它给了我
我可能缺少对整个过程的一些基本了解。
c - 即使共享对象是由使用 -rdynamic 编译的程序加载的,您能否编译共享对象以首选本地符号?
我正在用 C 语言构建一个共享库,该库由我没有源代码访问权限的程序动态加载。目标平台是 64 位 Linux 平台,我们使用 gcc 构建。我能够在大约 100 行中构建该问题的复制品,但仍然需要阅读一些内容。希望它是说明性的。
核心问题是我在共享库中定义了两个非静态函数(bar
和)。baz
两者都需要是非静态的,因为我们希望调用者能够对它们进行 dlsym。此外,baz
调用bar
. 使用我的库的程序还有一个名为 的函数bar
,这通常不会成为问题,但调用程序是用 编译的-rdynamic
,因为它有一个foo
需要在我的共享库中调用的函数。结果是我的共享库最终bar
在运行时链接到调用程序的版本,产生不直观的结果。
在理想情况下,我可以在编译共享库时包含一些命令行开关,以防止这种情况发生。
我目前的解决方案是将我的非静态函数重命名为funname_local
并将它们声明为静态。然后我定义了一个新函数:
,并将我的共享库中对 的funname() { return funname_local(); }
任何引用更改为。这可行,但感觉很麻烦,我更愿意告诉链接器更喜欢在本地编译单元中定义的符号。funname
funname_local
内部.c
内部.h
主程序
主文件
共享.c
编译:
跑:
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 数据库一起使用,但我不确定如何修复这些错误。谢谢你。
r - 从 R 内部设置 LD_LIBRARY_PATH
我已经安装了一个 R 包,但是为了通过 加载它library
,需要将 LD_LIBRARY_PATH 设置为其中一个名为的库所在的路径libhts.so.2
。加载仅在进入 R 之前编辑 LD_LIBRARY_PATH 时有效,而不是之后。
我尝试了几种不同的方法来解决这个问题:
configure
从位于 R 包中的脚本中导出修改后的 LD_LIBRARY_PATH 。- 在同一
configure
脚本中创建指向共享库的软链接。
两者都没有工作,在我看来,一旦 R 启动,就有一个变量存储 LD_LIBRARY_PATH 的结果。也许解决方案是编辑该变量。
objective-c - 如何忽略特定库的 -Objc 标志
在我的项目中,我有大量的静态库。我目前使用 -ObjC 链接器标志,它将包括实现任何 Objective-c 类的静态库的所有成员。
我有 1 个特别大的静态库,我特别想要只包含在二进制文件中的类(我知道 Objective-c 的动态性质以及这样做的注意事项)。如果不使用 -ObjC,就会发生这种情况。
是否可以向链接器指定我希望此特定库不属于 -ObjC 标志?
如果实现这一点的唯一方法是为我以某种方式发现包含 objc的每个其他库添加 force_load 标志,那将是不幸的。
c++ - Apple Mach-O 链接器 (ld) 错误。ld: -r 和 -dead-strip 不能一起使用
XCode 5.0.1在成功编译 161 个 C++ 项目文件后给我一个错误。 有很多 Apple Mach-O Linker Error 问题,但没有一个对我有帮助。
错误消息如下:
我的构建设置中的链接部分如下图所示:
谁能让我知道如何解决这个错误?
更新
当我设置 为时Dead Code Stripping
, No
我得到 19 个链接错误。Mach-O Type
设置Dynamic Library
为Release
和Debug
。这种情况下的错误如下:
和错误信息如下:
在一些类似的问题中,我看到这可能是由于 Boost 的多个版本造成的,但我已经检查过了。