
编译相关
文章平均质量分 70
mushanshui
这个作者很懒,什么都没留下…
展开
-
Gradle相关概念
【代码】Gradle相关概念。原创 2024-06-18 16:31:19 · 270 阅读 · 0 评论 -
ndk-build
二、Application.mkAPP_BUILD_SCRIPT:指定编译脚本APP_ABI:指定编译的CPU架构APP_PLATFORM:指定编译目标Android版本号NDK_MODULE_PATH:ndk编译时搜索模块时要查找的目录APP_STL:编译使用的C++标准库APP_CFLAGS:全局的C编译flagsAPP_CPPFLAGS:全局的C++编译flagsAPP_LDFLAGS:全局的链接flags三、Android.mk3.0、模块名定义要参与编译的c、cpp文件原创 2024-06-16 10:22:59 · 383 阅读 · 0 评论 -
Class信息及操作
因为Java语言的泛型采用擦除法实现的伪泛型,在字节码中,泛型信息在编译之后通通被擦除,如运行期做反射时无法获取泛型信息,Signature属性就是为了弥补这个缺陷而增设,可以让Java反射API能够获取反射类型。对于使用者来说相对比较友好,但它执行效率低,另外它需要全量的代码参与编译,如果要编译的class文件依赖的其他class文件不存在的话,会报错,导致编译失败。方法的代码包含在一个类型为Code的属性中。描述字段的详情信息,包括访问权限、字段名、描述信息在常量池中的索引、属性数量和具体的属性信息。原创 2023-04-22 22:15:57 · 149 阅读 · 0 评论 -
Bazel编译Android程序
使用bazel快速编译Android程序原创 2024-05-26 07:53:47 · 332 阅读 · 0 评论 -
简单的maven仓库
gradle同时即会从https://repo1.maven.org/maven2/com/squareup/okhttp3/okhttp/3.8.0/okhttp-3.8.0.jar下载组件,可以看出gradle下载依赖时,根据组件信息组装成对应的下载地址,从maven服务器下载对应的组件。将相关的组件上传到自己的maven仓库,再从自己的仓库中拉取,速度会快很多。在项目中引用了okhttp3的3.8.0版本组件,maven仓库为https://repo1.maven.org/maven2/,如下。原创 2023-10-30 22:09:35 · 227 阅读 · 0 评论 -
项目缓存目录快速清除
一个gradle或pom项目有很多模块,想要删除编译产物,需要执行相关的clean指令,但速度相对较慢,手动删除会更麻烦。此脚本用来快速清除gradle、pom、npm项目缓存文件。1、gradle项目。原创 2023-10-30 21:32:07 · 682 阅读 · 0 评论 -
动态库导出问题
其他项目引用动态库时,直接引用导入库即可,导入库相关的信息会被编译到引用方产物中,但最终的打包产物中只有动态库,而没有导入库。导入库并不是必须的,在没有导入库的情况下,可以使用动态加载的方式来加载动态库,通过指定的函数名来引用函数。动态库引用动态库没有问题,但动态库引入静态库场景,可能会产生以下两种问题。在ubuntu或mac编译好的动态库,放到windows上编译出现了大量“无法解析的外部符号”错误,对Windows编译不太了解的同学一定感觉到特别困惑,这主要是不同系统关于动态库定义之间的差异。原创 2023-08-12 14:41:58 · 278 阅读 · 0 评论 -
msvc编译相关问题
编译环境:使用gn构建工具,msvc编译器对源码编译。原创 2023-08-12 13:17:46 · 1313 阅读 · 0 评论 -
MinGW-w64编译Windows程序
MinGW(Minimalist GNU for Windows)可以理解为Windows版本的gcc编译器。作为编译器不但要能编译源码,还需要为源码提供依赖支持,如使用到的标准C++ API、系统API。在C++标准库里,MinGW还提供了一些类Unix API,如socket、file、动态库加载等。MinGW只能编译32程序,目前演变为MinGW-w64,可以编译64或32程序。C++项目源码结构项目源码C++标准库(编译器提供)系统API(编译器提供)三方库MinGW安装目录结构。原创 2023-08-12 12:50:29 · 1854 阅读 · 0 评论 -
MinGW编译相关问题
在mac、ubuntu上编译只有几处报错,而使用MinGW编译时全部报错,而且是针对模板类型的构造函数。根据警告信息重新声明需要添加dllimport,使用dllimport标记后,出现警告信息2:重新声明方法不能使用dllimport。使用动态库引用静态库,而静态库使用的是dllexport函数导出,动态库使用visibility(“default”)导出,导出动态库中所有函数均不能正常导出。4、constexpr变量的值需要在编译时就要确定,对于构造函数也需要使用constexpr进行修饰才行。原创 2023-08-12 12:22:04 · 1289 阅读 · 0 评论 -
gn静态库编译问题
但,在该项目中,可执行文件配置依赖demo_static1或demo_static2都是可以正常运行的,demo_static2.a只是编译过程的中间产物,最终会根据demo_static2.a中的信息找到其他依赖项打包到最终产物中。demo_static1.ninja文件中关于生成libdemo_static2.a的规则,由demo_sources.stamp生成,demo_sources.stamp内部为空。demo_static2依赖的是源码生成的source_set配置,生成的静态库文件88B。原创 2023-08-09 01:00:00 · 859 阅读 · 1 评论 -
linux coredump分析
默认不生成coredump文件,在命令行执行如下命令,再在命令行执行程序即可在当前目录下生成core文件,此文件即coredump文件。2、使用在gdb的命令行下,执行bt查看堆栈信息。1、加载coredump文件。原创 2023-05-21 14:45:37 · 204 阅读 · 0 评论 -
Google依赖管理DEPS
DEPS进行依赖管理在Google系统项目中大量存在,如flutter、skia、v8等。因网络的原因要想编译这些项目,还是需要了解一些DEPS相关的知识,否则遇到些问题就不知道如何处理了。原创 2023-05-14 21:30:10 · 3160 阅读 · 0 评论