当尝试为模拟器和设备构建胖静态库时,我们遇到了 lipo/libtool 的问题。在 M1 arm64 之前,设备的 armv7/arm64 切片和模拟器的 x86_64 切片都运行良好。现在 lipo 无法识别模拟器的 arm64 构建和设备的 arm64 构建之间的差异,并且拒绝添加 2 个 arm64 切片。
有没有办法构建“通用”arm64 lib 切片(因为我们 lib 中的代码与平台无关)
是否有其他工具可以实现将 2 个 arm64 切片打包到 .a 中,或者我们现在需要为模拟器和设备构建 2 个单独的静态库吗?(请注意,我们不使用 Xcode 进行构建,因此我们只是在命令行上进行链接)。
有趣的是,当链接动态标准库(例如 libxml)时,无论平台如何, -lxml 就足够了,但这适用于动态库,而不是静态库。静态库是否存在类似的机制?
我想将Qt4程序移植到Qt5,并且未定义某些功能(例如QHeaderView :: setMoveable),但是我在qheaderview.h文件中看到具有一些魔术定义(QT_DEPRECATED_SINCE),应该可以重新启用它们。为了让QHeaderView :: setMovable重新出现,我该怎么做?我不希望重写我的代码,如果有这样的一种方式。
下面的简单程序
#include <malloc.h>
int main(int argc, char **argv)
{
char* arr=malloc(10);
arr[10]='\0';
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在 32 位动态链接中与 VC2019 16.8.2 构建良好
cl -Zi -fsanitize=address -MD clang_rt.asan_dynamic-i386.lib xx.c
并在运行程序时报告内存错误。但是,当使用 64 位变体时,我收到链接错误
> cl -Zi -fsanitize=address -MD clang_rt.asan_dynamic-x86_64.lib xx.c
Microsoft (R) C/C++ Optimizing Compiler Version 19.28.29336 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
xx.c
Microsoft (R) Incremental Linker Version 14.28.29336.0
Copyright (C) Microsoft Corporation. All rights reserved.
/out:xx.exe
/debug
clang_rt.asan_dynamic-x86_64.lib
xx.obj
xx.obj : error LNK2019: unresolved external symbol __asan_shadow_memory_dynamic_address referenced …Run Code Online (Sandbox Code Playgroud)