- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我创建了一堆 .o
文件(通过 gcc -c $file.c $someotherops -o $file.o
)。现在我想将它们链接到一个静态库中。
我不确定我是否应该使用 ld
或 gcc
为了这。在 ld
手册,据说我不应该直接使用它。但是,我无法弄清楚创建静态库的 gcc 参数。
我试过 ld *.o -static -o libfoo.a
但它提示很多缺少符号(我认为都来自 libc)。我不明白为什么它会提示,因为它应该是一个静态库。我认为一旦我将该静态库链接到其他东西,它就会检查符号。
另一件事:我使用 /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ld
在这里(我的目标是 iOS)。它提示警告 ld: warning: using ld_classic
.这是关于什么的?
然后我想,也许它需要指定动态库。所以我加了-lc
链接到 libc。但它提示 can't locate file for: -lc
.我加了 -L/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/lib
并且有一个 libc.dylib
.
有任何想法吗?
关于-lc
错误:它在我指定后消失了 -arch armv6
.然后它提示一个错误libcache.dylib
(必须从 libc.dylib
链接,我猜是因为它没有指定它)。添加 -L.../usr/lib/system
有帮助。
现在,每单.o
文件,我收到警告 ld: warning: CPU_SUBTYPE_ARM_ALL subtype is deprecated
.这是关于什么的?
而且我仍然有一堆缺少的符号,尤其是:
Undefined symbols for architecture armv6:
"start", referenced from:
-u command line option
(maybe you meant: _PyThread_start_new_thread)
"___udivsi3", referenced from:
_get_len_of_range in bltinmodule.o
_quorem in dtoa.o
_array_resize in arraymodule.o
_newarrayobject in arraymodule.o
_array_fromfile in arraymodule.o
_get_len_of_range in rangeobject.o
_inplace_divrem1 in longobject.o
...
"___unorddf2", referenced from:
_builtin_round in bltinmodule.o
...
___udivsi3
在
get_len_of_range
.该函数仅使用 C 算法,没有外部调用。所以这似乎被翻译成使用一些外部函数,如
___udivsi3
.但这是在哪些库中?
-lgcc_s.1
修复了大部分
___udivsi3
和相关的缺失符号。
start
符号仍然缺失。什么
-u command line option
意思是?
ld
毕竟不是正确的工具。在那里,只需调用
ar
用来。这似乎更有意义。我会检查这是否有效,然后将其转换为答案。
ar
在构建胖静态库时向我发出一些警告。它给了我使用
libtool
的提示反而。这就是我现在正在做的,即
libtool -static -o libfoo.a *.o
.我也将编译器切换到
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
但不确定这是否重要。
ld: warning: PIE disabled. Absolute addressing (perhaps -mdynamic-no-pic) not allowed in code signed PIE, but used in __PyBuiltin_Init from /Users/az/Programmierung/python-embedded/libpython.a(bltinmodule.o). To fix this warning, don't compile with -mdynamic-no-pic or link with -Wl,-no_pie
ld: warning: 32-bit absolute address out of range (0x1001B70C4 max is 4GB): from _usedpools + 0x00000004 (0x001B70CC) to 0x1001B70C4
ld: warning: 32-bit absolute address out of range (0x1001B70C4 max is 4GB): from _usedpools + 0x00000000 (0x001B70CC) to 0x1001B70C4
-mdynamic-no-pic
.我也没有真正看到
_PyBuiltin_Init
我如何在那里使用绝对寻址。
WITH_PYMALLOC
,如果有人对这些特定的 Python 内部结构感兴趣)。
dyld: vm_protect(0x00001000, 0x00173000, false, 0x07) failed, result=2 for segment __TEXT in /var/mobile/Applications/C15D9525-E7DC-4463-B05B-D39C9CA24319/...
-no_pie
对于链接,它甚至没有链接。它失败了:
Illegal text-relocation to ___stderrp in /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/usr/lib/libSystem.dylib from _read_object in /Users/az/Programmierung/python-embedded/libpython.a(marshal.o) for architecture armv7
-static
在我的命令行 Clang 中。一旦我删除了它,警告就消失了,dyld/vm_protect 错误也消失了。这是它第一次真正运行一些代码。
最佳答案
现在一切正常。基本上,答案是:
*.c
文件照常发送到 *.o
文件。唯一真正的区别是不同的 GCC/Clang,-arch armv7
, 不同的 SDK/包含目录。 libtool -static -o libfoo.a *.o
构建静态库。 关于ios - 如何链接 iOS 的静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11064984/
IO 设备如何知道属于它的内存中的值在memory mapped IO 中发生了变化? ? 例如,假设内存地址 0 专用于保存 VGA 设备的背景颜色。当我们更改 memory[0] 中的值时,VGA
我目前正在开发一个使用Facebook sdk登录(通过FBLoginView)的iOS应用。 一切正常,除了那些拥有较旧版本的facebook的人。 当他们按下“使用Facebook登录”按钮时,他
假设我有: this - is an - example - with some - dashesNSRange将使用`rangeOfString:@“-”拾取“-”的第一个实例,但是如果我只想要最后
Card.io SDK提供以下详细信息: 卡号,有效期,月份,年份,CVV和邮政编码。 如何从此SDK获取国家名称。 - (void)userDidProvideCreditCardInfo:(Car
iOS 应用程序如何从网络服务下载图片并在安装过程中将它们安装到用户的 iOS 设备上?可能吗? 最佳答案 您无法控制应用在用户设备上的安装,因此无法在安装过程中下载其他数据。 只需在安装后首次启动应
我曾经开发过一款企业版 iOS 产品,我们公司曾将其出售给大型企业,供他们的员工使用。 该应用程序通过 AppStore 提供,企业用户获得了公司特定的配置文件(包含应用程序配置文件)以启用他们有权使
我正在尝试将 Card.io SDK 集成到我的 iOS 应用程序中。我想为 CardIO ui 做一个简单的本地化,如更改取消按钮标题或“在此保留信用卡”提示文本。 我在 github 上找到了这个
我正在使用 CardIOView 和 CardIOViewDelegate 类,没有可以设置为 YES 的 BOOL 来扫描 collectCardholderName。我可以看到它在 CardIOP
我有一个集成了通话工具包的 voip 应用程序。每次我从我的 voip 应用程序调用时,都会在 native 电话应用程序中创建一个新的最近通话记录。我在 voip 应用程序中也有自定义联系人(电话应
iOS 应用程序如何知道应用程序打开时屏幕上是否已经有键盘?应用程序运行后,它可以接收键盘显示/隐藏通知。但是,如果应用程序在分屏模式下作为辅助应用程序打开,而主应用程序已经显示键盘,则辅助应用程序不
我在模拟器中收到以下错误: ImageIO: CGImageReadSessionGetCachedImageBlockData *** CGImageReadSessionGetCachedIm
如 Apple 文档所示,可以通过 EAAccessory Framework 与经过认证的配件(由 Apple 认证)进行通信。但是我有点困惑,因为一些帖子告诉我它也可以通过 CoreBluetoo
尽管现在的调试器已经很不错了,但有时找出应用程序中正在发生的事情的最好方法仍然是古老的 NSLog。当您连接到计算机时,这样做很容易; Xcode 会帮助弹出日志查看器面板,然后就可以了。当您不在办公
在我的 iOS 应用程序中,我定义了一些兴趣点。其中一些有一个 Kontakt.io 信标的名称,它绑定(bind)到一个特定的 PoI(我的意思是通常贴在信标标签上的名称)。现在我想在附近发现信标,
我正在为警报提示创建一个 trigger.io 插件。尝试从警报提示返回数据。这是我的代码: // Prompt + (void)show_prompt:(ForgeTask*)task{
您好,我是 Apple iOS 的新手。我阅读并搜索了很多关于推送通知的文章,但我没有发现任何关于 APNS 从 io4 到 ios 6 的新更新的信息。任何人都可以向我提供 APNS 如何在 ios
UITabBar 的高度似乎在 iOS 7 和 8/9/10/11 之间发生了变化。我发布这个问题是为了让其他人轻松找到答案。 那么:在 iPhone 和 iPad 上的 iOS 8/9/10/11
我想我可以针对不同的 iOS 版本使用不同的 Storyboard。 由于 UI 的差异,我将创建下一个 Storyboard: Main_iPhone.storyboard Main_iPad.st
我正在写一些东西,我将使用设备的 iTunes 库中的一部分音轨来覆盖 2 个视频的组合,例如: AVMutableComposition* mixComposition = [[AVMutableC
我创建了一个简单的 iOS 程序,可以顺利编译并在 iPad 模拟器上运行良好。当我告诉 XCode 4 使用我连接的 iPad 设备时,无法编译相同的程序。问题似乎是当我尝试使用附加的 iPad 时
我是一名优秀的程序员,十分优秀!